본문 바로가기
4장 프로그래밍 언어/C++

[C++ STL] 표준 라이브러리 컨테이너

2021. 6. 17.

표준 라이브러리에서 제공하는 컨테이너는 다양한 데이터를 묶음 단위로 저장하는 제네릭 데이터 구조다.

  • 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로 볼 수 있다.

반응형

댓글