Kullanmanız gereken back_inserter:
std::copy(input.begin(), input.end(), std::back_inserter(output));
std::copyeklediğiniz kaba öğe eklemez: eklemez; yalnızca kapsayıcıya bir yineleyiciye sahiptir. Bu nedenle, bir çıktı yineleyicisini doğrudan ' std::copya iletirseniz, bunun en azından giriş aralığını tutacak kadar büyük bir aralığa işaret ettiğinden emin olmalısınız.
std::back_inserterpush_backher öğe için bir konteyneri çağıran bir çıktı yineleyicisi oluşturur , böylece her öğe konteynere eklenir. Alternatif olarak, std::vectorkopyalanan aralığı tutmak için içinde yeterli sayıda öğe oluşturmuş olabilirsiniz :
std::vector<double> output(input.size());
std::copy(input.begin(), input.end(), output.begin());
Veya std::vectoraralık yapıcısını kullanabilirsiniz :
std::vector<double> output(input.begin(), input.end());
assign()işlevi de var :output.assign(input.begin(), input.end());