벡터 공간을 일부 예약 한 다음 std::copy_n()
으로 일부 값을 복사하면 올바르게 복사되고 액세스 할 수 있지만 벡터 크기는 다음과 같습니다. 여전히 0입니다. 이것은 예상 된 행동입니까? 효율적이지 않은 경우에도 벡터의 크기를 조정해야합니까?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, 비주얼 C++
'reserve()'는 용량이 아니라 크기에만 영향을 미친다고 생각합니다. –
@RawN, 네,하지만'copy_n'이 크기를 업데이트 할 것을 기대했습니다. – Pietro
당신은 단순히 dest = src를 할 수 있다는 것을 알고 있습니까? vector의 assign 함수를 아십니까? –