Bạn cần sử dụng một back_inserter
:
std::copy(input.begin(), input.end(), std::back_inserter(output));
std::copy
không thêm các phần tử vào vùng chứa mà bạn đang chèn: không thể; nó chỉ có một iterator vào container. Bởi vì điều này, nếu bạn truyền trực tiếp một trình vòng lặp đầu ra std::copy
, bạn phải chắc chắn rằng nó trỏ đến một phạm vi ít nhất đủ lớn để giữ phạm vi đầu vào.
std::back_inserter
tạo một trình vòng lặp đầu ra gọi push_back
trên một thùng chứa cho mỗi phần tử, vì vậy mỗi phần tử được chèn vào vùng chứa. Ngoài ra, bạn có thể đã tạo đủ số lượng phần tử trong std::vector
phạm vi để giữ phạm vi được sao chép:
std::vector<double> output(input.size());
std::copy(input.begin(), input.end(), output.begin());
Hoặc, bạn có thể sử dụng hàm tạo std::vector
phạm vi:
std::vector<double> output(input.begin(), input.end());
assign()
chức năng:output.assign(input.begin(), input.end());