Kullanmanız gereken back_inserter
:
std::copy(input.begin(), input.end(), std::back_inserter(output));
std::copy
eklediğiniz kaba öğe eklemez: eklemez; yalnızca kapsayıcıya bir yineleyiciye sahiptir. Bu nedenle, bir çıktı yineleyicisini doğrudan ' std::copy
a 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_inserter
push_back
her öğe için bir konteyneri çağıran bir çıktı yineleyicisi oluşturur , böylece her öğe konteynere eklenir. Alternatif olarak, std::vector
kopyalanan 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::vector
aralı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());