표준 라이브러리에서 제공하는 컨테이너는 다양한 데이터를 묶음 단위로 저장하는 제네릭 데이터 구조다.
- vector
순차 컨테이너로 기본 컨테이너로 사용된다. 프로파일러로 분석한 결과 이보다 낫다고 판단될 때만 다른 컨테이너를 사용한다.
- list
순차 컨테이너로 사용할 일이 거의 없다. 프로파일러로 분석한 결과 list가 vector보다 낫다고 판단되지 않는 한 웬만하면 vector를 쓴다.
- forward_list
순차 컨테이너로 사용할 일이 거의 없다. 프로파일러로 분석한 결과 forward_list가 vector보다 낫다고 판단되지 않는 한 웬만하면 vector를 쓴다.
- deque
순차 컨테이너로 사용할 일이 많지 않다. 주로 vector를 쓴다.
- array
순차 컨테이너로 표준 C 스타일 배열 대신 고정 크기 배열이 필요할 때 사용한다.
- queue
컨테이너 어댑터로 FIFO(First In First Out) 구조가 필요할 때 사용한다.
- priority_queue
컨테이너 어댑터로 우선순위가 있는 큐를 구현하고 싶을 때 사용한다.
- stack
컨테이너 어댑터로 FILO(First In Last Out) 구조를 구현하고 싶을 때 사용한다.
- set, multiset
정렬 연관 컨테이너이다. 원소를 정렬된 묶음에 담고, 조회/추가/삭제 성능도 모두 같게 만들고 싶을 때 사용한다. 원소의 중복을 허용하지 않으려면 set을 이용한다.
- map, multimap
정렬 연관 컨테이너이다. 원소를 키와 값이 연관된 순서쌍으로 키 값에 대해 정렬된 상태이다. 즉 연관 배열로 저장하면서 조회/추가/삭제 성능도 모두 같게 만들고 싶을 때 사용한다.
- unordered_set, unordered_multiset
비정렬 연관 컨테이너이자 해시 테이블이다. 조회/추가/삭제 성능이 모두 같게 만들고 싶으면서 원소를 정렬하지 않아도 될 때 사용한다. 일반 set보다 성능이 좋지만 원소의 종류에 따라 달라질 수 있다.
- unordered_map, unordered_multimap
비정렬 연관 컨테이너이자 해시 테이블이다. 키와 값을 묶어서 저장하고 조회/추가/삭제 성능이 모두 같게 만들고 싶으면서 원소를 정렬하지 않아도 될 때 사용한다. 일반 map보다 성능이 좋지만 원소의 종류에 따라 달라질 수 있다.
- bitset
특수한 형태의 컨테이너로 플래그 묶음을 표현하고 싶을 때 사용한다.
- string
엄밀히 말해 순차 컨테이너이며 문자에 대한 vector로 볼 수 있다.
댓글