ㄱ. 컨테이너 구분.
① 표준 시퀀스 컨테이너 ( vector, string, deque, list )
② 표준 연관 컨테이너 ( set, multiset, map, multimap )
③ 연속 메모리 컨테이너 ( vector, string, deque )
④ 노드 기반 컨테이너 ( set, multiset, map, multimap, list )
ㄴ. 알맞은 컨테이너 사용은 언제?
① 시퀀스 컨테이너 사용 할 시기
- 컨테이너의 아무 위치에 요소를 삽입 해야 한다면…
- 컨테이너 요소들의 순서 결정에 직접 관여 해야 한다면…
② 탐색 속도가 중요하면?
- 해쉬 컨테이너, 정렬된 vector 그리고 표준 연관 컨테이너의 순서대로 생각.
③ 반복자, 포인터, 참조자가 무효화 되는 일을 최소화 해야 하나?
- 노드 기반 컨테이너를 사용 : 노드 삽입과 삭제가 일어나도 기존의 반복자나 포인터 혹은 참조자가 무효화 되지 않음.
반면, 연속 메모리 컨테이너는 전체적인 메모리 재 할당이 빈번히 일어나기 때문에 반복자나 포인터, 참조자가 무효화 되기 쉽다.
④ 컨테이너 내의 데이터가 C의 데이터 타입과 메모리 배열 구조적으로 호환 되야 하면 vector뿐!
'[ Programming ] > [ Effective STL]' 카테고리의 다른 글
STL 항목 7 : new로 생성한 포인터의 컨테이너를 사용할 때에는 컨테이너가 소멸되기 전에 포인터를 delete하는 일을 잊지 말자. (0) | 2009.10.28 |
---|---|
STL 항목 5 : 단일 요소를 단위로 동작하는 멤버 함수보다 요소의 범위를 단위로 동작하는 멤버 함수가 더 낫다. (0) | 2009.10.27 |
STL 항목 4 : size()의 결과를 0과 비교할 생각이라면 차라리 empty를 호출하자. (0) | 2009.10.27 |
STL 항목 3 : 복사는 컨테이너 안의 객체에 맞게 비용은 최소화하며, 동작은 정확하게 하자. (1) | 2009.10.23 |
STL 항목 2 : “컨테이너에 독립적인 코드” 라는 환상을 조심하자. (0) | 2009.10.23 |