[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
반응형
'프로그래밍 > Effective STL' 카테고리의 다른 글
[effective STL] 항목 17 : 용량 바꿔치지 묘수(swap) (0) | 2015.12.26 |
---|---|
[effective STL] 항목 16 : 기존 C API에 vector와 string 넘기기 (0) | 2015.12.26 |
[effective STL] 항목 15 : string은 여러 가지 방식으로 구현되어 있다. (0) | 2015.12.17 |
[effective STL] 항목 13 : 동적으로 할당된 배열보다는 vector와 string이 낫다. (1) | 2015.10.02 |
[effective STL] 항목 10 : 할당자(allocator)의 일반적인 사항과 제약 사항 (1) | 2015.09.14 |
[effective STL] 항목 09 : 데이터를 삭제할 때에도 조심스럽게 선택 (0) | 2015.09.07 |
[effective STL] 항목 08 : auto_ptr의 컨테이너는 절대 말들지 말기 (0) | 2015.09.06 |