더북(TheBook)

앞에서 vectorcapacity를 늘리려고 reserve()를 호출했다. reserve() 호출로 원소들의 개수가 변경되지는 않는다. resize() 함수 멤버를 호출하면 vectorsize를 변경할 수 있고, 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()을 호출한 것처럼 제거된다. 이에 대해서는 조금 뒤에 더 자세히 설명하겠다. vectorsize를 줄여도 capacity에는 영향을 주지 않는다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.