Anda perlu menggunakan back_inserter
:
std::copy(input.begin(), input.end(), std::back_inserter(output));
std::copy
tidak menambahkan elemen ke wadah yang Anda masukkan: tidak bisa; hanya memiliki iterator ke dalam wadah. Karena itu, jika Anda meneruskan iterator keluaran langsung ke std::copy
, Anda harus memastikan itu menunjuk ke kisaran yang setidaknya cukup besar untuk menahan rentang input.
std::back_inserter
membuat iterator keluaran yang memanggil push_back
wadah untuk setiap elemen, sehingga setiap elemen dimasukkan ke dalam wadah. Atau, Anda bisa membuat sejumlah elemen dalam std::vector
untuk menahan rentang yang disalin:
std::vector<double> output(input.size());
std::copy(input.begin(), input.end(), output.begin());
Atau, Anda bisa menggunakan std::vector
konstruktor rentang:
std::vector<double> output(input.begin(), input.end());
assign()
fungsi:output.assign(input.begin(), input.end());