-연속메모리 컨테이너 : vector, string( or rope), deque = 배열로 이루어졌으며 재하당 이 일어날 수 있다
-노드기반 컨테이너 : set, multiset,map,multimap, 요소 삽입을 임의의 위치에서 삽입 불가능( 순서가 있으므로 )
(balanced tree 로 구성됨)
-해쉬컨테이너와 slist(단일연결리스트) 의 경우 양방향 반복자로 접근될 수 없다
-배열 구조와 호환되어야 한다면 vector밖에 쓸 수 있는게 없다
-탐색속도가 관심사라면 => 1.해쉬컨테이너, 2.정렬된 vector, 3. 표준 연관(set,map, 외..) 컨테이너 중 하나 의 순으로 접근한다
- 참조카운팅이 고려할때는 string 을 쓰지 말 것(string 내부에서 참조카운팅을 사용 할 수 있다=> 동일한 문자열에 대한 참조카운팅 )
rope 또한 마찬가지 => 참조 카운팅 기반으로 구현되어 있다
: 대신할 수 있는 것 vector<char>
-트렌젝션이 가능하거나 포인터,반복자, 참조가의 무효화가 최소화 되어야 하는가? => 노드기반 컨테이너( list, set, map )
삽입
set,map 의 경우 push_back, push_front 를 지원하지 않는다 => insert 로 써야 함, 순서유지
list 의 경우에는 지원
예약
vector 에서는 reserve,capacity 가 있지만 list, deque 에서는이 멤버함수가 없다(내부 구조 때문)
'STLTemplate > STL & EffectiveSTL' 카테고리의 다른 글
항목 28 : reverse_iterator에 대응되는 기점 반복자(base iterator)를 사용하는 방법을 정확하게 이해하자. (0) | 2012.11.09 |
---|---|
STL을 이용한 Unicode 텍스트 파일 출력 (0) | 2012.11.04 |
이펙티브 STL을 다루는 정리 사이트 (0) | 2012.11.01 |
항목 35 : 대소문자를 구분하지 않는 문자열 비교는 mismatch 아니면 lexicographical_compare를 써서 간단 (0) | 2012.11.01 |
3. STL 연관 컨테이너 - 19 (0) | 2012.11.01 |