더북(TheBook)

메모리 할당은 상대적으로 시간 비용이 비싸므로 필요 이상으로 메모리 할당이 발생해서는 안 된다. vector는 로그로 증가하는 알고리즘을 사용해 크기를 증가시킨다. 이와 같은 방법은 초기에 매우 작은 메모리를 여러 번 할당하게 하지만, vector가 확장됨에 따라 증가하는 크기가 늘어난다. vector를 생성할 때 초기 크기를 다음과 같이 설정할 수 있다.

std::vector<double> values(20); // 크기는 double 값 20개이고, 원소 20개가 있다

이 컨테이너는 처음부터 원소 20개를 생성하고, 기본값 0으로 초기화한다. vector 컨테이너를 초기 크기로 생성하면 추가 공간의 할당 횟수를 최소화할 수 있어서 좋다.

Caution

위 문장에서 원소의 개수 20을 둘러싼 소괄호 ()는 반드시 있어야 한다. 여기에 중괄호 {}는 쓸 수 없다. 다음과 같이 중괄호를 쓰면 전혀 다른 결과가 된다.

std::vector<double> values {20};   // 원소 하나만 20으로 초기화된다
 

이 vector가 갖는 원소는 20개가 아니다. 20으로 초기화된 원소 1개만 갖는다. 여기에 원소를 더 추가하면 추가 메모리 할당이 발생할 것이다.

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