जैसा कि दूसरों ने उल्लेख किया है, सी में आप उपयोग करेंगे memcpy । ध्यान दें कि यह एक कच्ची मेमोरी कॉपी करता है, इसलिए यदि आपकी डेटा संरचनाएं खुद को या एक-दूसरे को इंगित करती हैं, तो कॉपी में पॉइंटर्स अभी भी मूल ऑब्जेक्ट्स को इंगित करेंगे।
C ++ में आप भी उपयोग कर सकते हैं memcpyयदि आपके सरणी सदस्यों पॉड (है कि अनिवार्य रूप से प्रकार है जो आप भी सी में कोई बदलाव नहीं इस्तेमाल किया जा सकता था), लेकिन सामान्य रूप में, कर रहे हैं memcpyजाएगा नहीं की अनुमति दी जाए। जैसा कि दूसरों ने उल्लेख किया है, उपयोग करने का कार्य हैstd::copy ।
कहा जाता है कि, C ++ में आपको शायद ही कभी कच्चे सरणियों का उपयोग करना चाहिए। इसके बजाय आपको या तो मानक कंटेनरों में से एक का उपयोग करना चाहिए ( std::vectorएक अंतर्निहित सरणी के सबसे करीब है, और मुझे यह भी लगता है कि जावा सरणियों के सबसे करीब - सादे सी ++ सरणियों की तुलना में वास्तव में - लेकिन, std::dequeया std::listकुछ मामलों में अधिक उपयुक्त हो सकता है) या, यदि आप C ++ 11 का उपयोग करते हैं,std::array जो बिल्ट-इन सरणियों के बहुत करीब है, लेकिन अन्य C ++ प्रकारों जैसे मूल्य शब्दार्थों के साथ। मेरे द्वारा उल्लिखित सभी प्रकारों को असाइनमेंट या कॉपी निर्माण द्वारा कॉपी किया जा सकता है। इसके अलावा, आप itter सिंटैक्स का उपयोग करके opne से दूसरे (और यहां तक कि एक अंतर्निहित सरणी से) "क्रॉस-कॉपी" कर सकते हैं।
यह संभावनाओं का अवलोकन देता है (मुझे लगता है कि सभी प्रासंगिक हेडर शामिल किए गए हैं):
int main()
{
int a[] = { 1, 2, 3, 4 };
int b[4];
memcpy(b, a, 4*sizeof(int));
std::copy(a, a+4, b);
std::copy(std::begin(a), std::end(a), std::begin(b));
std::vector<int> va(a, a+4);
std::vector<int> vb = va;
std::vector<int> vc { 5, 6, 7, 8 };
vb = vc;
vb.assign(vc.begin(), vc.end());
std::vector<int> vd;
std::copy(va.begin(), va.end(), std::back_inserter(vd));
std::copy(a, a+4, vd.begin());
std::array<int, 4> sa = { 9, 10, 11, 12 };
std::array<int, 4> sb = sa;
sb = sa;
}
man memmoveऔरman memcpy