सीधा जवाब:
हम एक वेक्टर से दूसरे में मान निर्दिष्ट करने std::vector::operator=के लिए कंटेनर के सार्वजनिक सदस्य फ़ंक्शन का उपयोग कर सकते हैं std::vector।
- एक कंस्ट्रक्टर फ़ंक्शन का उपयोग करें
इसके अलावा, एक निर्माण कार्य भी समझ में आता है। पैरामीटर (जैसे x) के रूप में एक और वेक्टर के साथ एक निर्माण कार्य xउसी क्रम में तत्वों में से प्रत्येक की एक प्रति के साथ एक कंटेनर का निर्माण करता है ।
सावधान:
- प्रयोग नहीं करें
std::vector::swap
std::vector::swapएक वेक्टर को दूसरे की नकल नहीं कर रहा है, यह वास्तव में दो वैक्टर के तत्वों की अदला-बदली कर रहा है, जैसा कि इसके नाम से पता चलता है। दूसरे शब्दों में, कॉपी करने के लिए स्रोत वेक्टर को संशोधित करने के बाद std::vector::swapकहा जाता है, जो संभवतः वह नहीं है जो आपसे अपेक्षित है।
यदि स्रोत वेक्टर में तत्व अन्य डेटा के संकेत हैं, तो एक गहरी प्रतिलिपि कभी-कभी चाहिए।
विकिपीडिया के अनुसार:
एक गहरी प्रतिलिपि, जिसका अर्थ है कि फ़ील्ड को संदर्भित किया जाता है: कॉपी की जा रही वस्तुओं के संदर्भ के बजाय, किसी भी संदर्भित ऑब्जेक्ट के लिए नई प्रतिलिपि ऑब्जेक्ट बनाए जाते हैं, और बी में रखे गए इन संदर्भों को संदर्भित करते हैं।
दरअसल, डी कॉपी करने के लिए वर्तमान में C ++ में बिल्ट-इन तरीका नहीं है। उपरोक्त सभी तरीके उथले हैं। यदि एक गहरी प्रतिलिपि आवश्यक है, तो आप एक वेक्टर को पीछे छोड़ सकते हैं और मैन्युअल रूप से संदर्भ की प्रतिलिपि बना सकते हैं। वैकल्पिक रूप से, ट्रैवर्सिंग के लिए एक पुनरावृत्ति पर विचार किया जा सकता है। इटरेटर पर चर्चा इस सवाल से परे है।
संदर्भ
std::vectorCplusplus.com का पेज