आपको उपयोग करने की आवश्यकता है 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());