คุณต้องใช้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());