Если я зарезервирую некоторое пространство для вектора, а затем скопирую в него значения с std::copy_n()
, я получу значения, скопированные правильно и доступные, но размер вектора равен все еще ноль. Это ожидаемое поведение? Должен ли я изменить размер вектора вместо этого, даже если он не так эффективен?std :: copy_n не меняет размер целевого вектора
#include <algorithm>
#include <iostream>
#include <vector>
int main()
{
std::vector<double> src, dest;
for(double x = 0.0; x < 100.0; ++x)
src.push_back(x);
dest.reserve(src.size());
std::copy_n(src.cbegin(), src.size(), dest.begin());
std::cout << "src.size() = " << src.size() << std::endl;
std::cout << "dest.size() = " << dest.size() << std::endl;
for(size_t i = 0; i < src.size(); ++i)
std::cout << dest[i] << " ";
}
Составители испытываться: лязг, GCC, Visual C++
Я думаю, что 'reserve()' влияет только на емкость, а не на размер. –
@RawN, да, но я ожидал, что 'copy_n' обновит размер. – Pietro
Вы знаете, что можете просто сделать dest = src? Вы знаете функцию назначения вектора? –