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