आपको उपयोग करने की आवश्यकता है back_inserter
:
std::copy(input.begin(), input.end(), std::back_inserter(output));
std::copy
उस कंटेनर में तत्वों को नहीं जोड़ा जाता है जिसमें आप सम्मिलित कर रहे हैं: यह नहीं हो सकता; यह केवल कंटेनर में एक पुनरावृत्ति है। इस वजह से, यदि आप सीधे आउटपुट इट्रर पास करते हैंstd::copy
यह सुनिश्चित करना चाहिए कि यह उस बिंदु की ओर इशारा करे जो इनपुट रेंज को धारण करने के लिए कम से कम बड़ा हो।
std::back_inserter
एक आउटपुट इट्रेटर बनाता है जो push_back
प्रत्येक तत्व के लिए कंटेनर पर कॉल करता है, इसलिए प्रत्येक तत्व कंटेनर में डाला जाता है। वैकल्पिक रूप से, आप std::vector
रेंज की प्रतिलिपि बनाने के लिए पर्याप्त संख्या में तत्व बना सकते थे :
std::vector<double> output(input.size());
std::copy(input.begin(), input.end(), output.begin());
या, आप std::vector
रेंज कंस्ट्रक्टर का उपयोग कर सकते हैं :
std::vector<double> output(input.begin(), input.end());
assign()
समारोह भी है:output.assign(input.begin(), input.end());