앞에서 vector의 capacity를 늘리려고 reserve()를 호출했다. reserve() 호출로 원소들의 개수가 변경되지는 않는다. resize() 함수 멤버를 호출하면 vector의 size를 변경할 수 있고, capacity를 늘리는 데도 쓸 수 있다. resize()를 사용한 몇 가지 예제를 보자.
std::vector<int> values {1,2,3}; // 1 2 3 : size is 3 values.resize(5); // 1 2 3 0 0 : size is 5 values.resize(7, 99); // 1 2 3 0 0 99 99 : size is 7 values.resize(6); // 1 2 3 0 0 99 : size is 6
첫 번째 resize() 호출은 size를 인수로 전달된 원소들의 개수로 변경한다. 여기서는 원소 2개가 뒤에 추가되고 해당 타입의 기본값으로 초기화된다. 원소들을 추가하다가 현재 capacity를 초과하면 capacity를 자동으로 늘린다. 두 번째 resize() 호출은 size를 첫 번째 인수로 전달된 원소들의 개수로 변경하고, 새로 추가되는 원소들의 값은 두 번째 인수로 설정된다. 세 번째 resize() 호출은 values 컨테이너의 크기를 6으로 변경한다. 그런데 6은 현재 크기보다 작다. size를 줄여야 할 때 초과된 원소들은 컨테이너에서 pop_back()을 호출한 것처럼 제거된다. 이에 대해서는 조금 뒤에 더 자세히 설명하겠다. vector의 size를 줄여도 capacity에는 영향을 주지 않는다.