Bạn cần sử dụng một back_inserter:
std::copy(input.begin(), input.end(), std::back_inserter(output));
std::copykhô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_insertertạo một trình vòng lặp đầu ra gọi push_backtrê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::vectorphạ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::vectorphạm vi:
std::vector<double> output(input.begin(), input.end()); 
               
              
assign()chức năng:output.assign(input.begin(), input.end());