차례
1. 컨테이너(Container) [Bottom] [Top]
1.1. 컨테이너의 특징 [Bottom] [Top]
특징
vector
deque
list
set/multiset
map/multimap
내부 자료구조
동적 배열
배열의 배열
이중 링크드 리스트
바이너리 트리
바이너리 트리
원소
value
value
value
value
Key/value
중복 허옹 여부
허용
허용
허용
허용 안함 / 허용
key에 대해서만 허용 안함 / 허용
랜덤 액세스 여부
허용
허용
허용 안함
허용 안함
key를 사용하여 가능 / 허용 안함
반복자 카테고리
랜덤 액세스
랜덤 액세스
양방향
양방향(원소는 상수이다)
양방향(key는 상수)
원소의 검색/찾기
느림
느림
매우 느림
빠름
key에 대해서 빠름
원소의 삽입 및 제거가
빠른 구간컨테이너의 끝
컨테이너의 앞과 끝
아무곳에서나
-
-
삽입/제거 동작의 반복자와
레퍼런스, 포인트의 무효화재할당시
항상
일어나지 않음
일어나지 않음
일어나지 않음
제거된 원소에 대한 메모리
해제 여부일어나지 않음
가끔 일어남
항상 일어남
항상 일어남
항상 일어남
메모리 예약의 허용 여부
허용
허용 안함
-
-
-
트랜젝션 안전성(성공하거나
아무런 영향도 없다)push, pop
push, pop
sort()와 할당 연산자를
제외한 모든 연산들다중 원소 삽입 제외한
모든 연산다중 원소 삽입 제외한
모든 연산
1.2. 시퀀스 컨테이너(Sequence container) [Bottom] [Top]
- vector - 가변 길이 시퀀스, 임의 접근(random access) 가능, 시퀀스의 끝에서 삽입/삭제.
- deque - 가변 길이 시퀀스, 임의 접근 가능, 시퀀스의 앞, 끝에서 삽입/삭제.
- list - 가변 길이 시퀀스, 선형 시간 접근만 가능, 임의의 위치에 삽입/삭제 가능.
1.3. 정렬 연관 컨테이너(Sorted associative container) [Bottom] [Top]
- set - 유일 키(Unique key) 지원, 빠른 키(Key) 값 검색.
- multiset - 중복 키(Duplicate key) 지원, 빠른 키 값 검색.
- map - 유일 키 지원, 키 값으로 데이터 검색.
- multimap - 중복 키 지원, 키 값으로 데이터 검색.
1.4. 컨테이너 어댑터(Container adaptor) [Bottom] [Top]
- stack - vector, deque, list 에 적용 가능, LIFO(후입선출) 구조.
- queue - deque, list 에 적용 가능, FIFO(선입선출) 구조.
- priority_queue - vector, deque 에 적용 가능, 비교 함수 객체에 따라 우선 순위 처리.
1.5. 비표준 컨테이너(Non-standard container) [Bottom] [Top]
- hash_map
- hash_set
- bitset
2. 컨테이너 동작 [Bottom] [Top]
주요 컨테이너의 기본 동작에 대하여 그림으로 정리
참조> 그림을 보는 방법
구분
설명
초록색 (Green)
컨테이너
파란색 (Blue)
참조 함수
보라색 (Purple)
삽입/삭제 함수
2.1. vector 동작 [Bottom] [Top]
2.2. queue 동작 [Bottom] [Top]
2.3. deque, list 동작 [Bottom] [Top]
2.4. stack 동작 [Bottom] [Top]
3. 컨테이너 함수 [Bottom] [Top]
3.1. insert() 함수 [Bottom] [Top]
- Toggle line numbers
1 // 클래스 선언 2 class CData 3 { 4 ... 5 }; 6 7 // 데이터형 선언 8 typedef std::set< CData * > SET_DATA; 9 typedef std::pair< SET_DATA::iterator, bool > SET_DATA_INSERT_RESULT; 10 11 12 //------------------------------------------------------------------------------ 13 // 컨테이너 정의 14 SET_DATA setData; 15 16 // 새로운 객체 할당 17 CData * pData = new CData(); 18 19 // 데이터 삽입 & 결과 20 SET_DATA_INSERT_RESULT result = setData.insert( pData ); 21 if( false == result.second ) 22 { 23 // ERROR: 동일한 데이타 존재함 24 }
반응형
'STLTemplate > STL & EffectiveSTL' 카테고리의 다른 글
STL 연관컨테이너 bitset 예제소스 (0) | 2012.11.01 |
---|---|
typename 을 써야 하는 순간 & iterator_traits (0) | 2012.11.01 |
C++ Standard Library : 튜토리얼·레퍼런스 홈페이지, 예제소스 (0) | 2012.11.01 |
함수자 (0) | 2012.11.01 |
어댑터에 사용하기 위한 사용자 정의 함수객체 (0) | 2012.11.01 |