2011-08-02 6 views
3

나는 성장할 필요가 없다는 것을 알고있는 표준 : : 벡터가 있습니다 - 항상 n 요소를 갖습니다 (불행히도 n은 컴파일 타임에 알 수 없으므로 ' std :: array를 사용하십시오). 할 수있는 한 :std :: vector가 push_back에서 크기 조정하지 못하도록 함

정확하게 용량을 n으로 설정합니다. 그러나 vpush_back으로 채우면 자동으로 2n으로 크기가 조정됩니다.

나는 조기 최적화라고 생각하지만, 그것은 나를 괴롭 히고있다. 최대 크기 등을 설정하는 방법이 있습니까?

답변

13

해당 생성자는 벡터의 용량을 n으로 설정하지 않고 대신 blah의 기본 생성자로 구성된 n 개 개체를 포함하는 벡터를 만듭니다. 이는 Java 또는 .NET 배경을 가진 사람들에게 혼동을 줄 수 있습니다. ArrayListList<T>에는 모두 초기 용량을 설정하는 생성자가 있습니다.

이 솔루션은 두 단계로 그것을 할 수 있습니다 : 그것은 가치가 어떤 사람이 벡터를 오용하고 두 배로 용량이 발생하는 경우,이 용량 증가를 방지하지 않습니다

std::vector<blah> v; // create an empty vector 
v.reserve(n); // increase capacity 
+2

하십시오. 그런 종류의 안전을 원한다면 아마도 자신의 수업을 시작해야 할 것입니다. –

+0

감사합니다. 바보 같은 질문에 사과드립니다! –

관련 문제