[effective STL] 항목 14 : 재할당 방지 reserve

2015. 12. 17. 02:13프로그래밍/Effective STL

728x90
728x90
STL의 컨테이너는 프로그래머가 신경쓰지 않고 요소를 늘릴 수 있다.

제약 - 최대 크기를 넘지 않는 하.

컨테이너 최대 크기를 넘으면?

- 컨테이너의 현재 용량의 배 수(보통 2배)를 늘린다.

- 새 메모리에 객체를 복사한다.

- 기존 메모리의 객체를 소멸시키고 메모리를 해제한다.


reserve 멤버 함수는 사용할 메모리를 미리 할당해 둠으로써 재할당 회수를 최소화시킨다.


STL 맨들이 알아야 할 네 가지 함수

* 이 네 가지를 모두 지원하는 컨테이너는 vector와 string이다.


size() - 컨테이너에 들어 있는 요소의 개수.

capacity() - 할당된 메모리로 담을 수 있는 요소의 개수.

resize(size_t n) - 컨테이너가 담을 수 있는 요소의 개수를 n개로 무조건 만든다.

reserve(size_t n) - 컨테이너의 용량을 최소 n개로 맞춘다. 


정리 하자면 재할당을 피하는 방법은 reserve를 통해 컨테이너의 용량을 예상 크기만큼 맞춘다는 것.

실제 현업에서도 써봣다! 리저브!


728x90
반응형