적재적소에 알맞은 컨테이너를 사용하자


  • 표준 STL 시퀀스 컨테이너 : vector. string, deque, list
  • 표준 STL 연관 컨테이너 : set, multiset, map multimap
  • 비표준 시퀀스 컨테이너 : slist(싱글링크드리스트), rope(대용량 string)
  • string 대산 사용되는 vector<char> : 가끔사용. 항목13참조.
  • STL 에속하지 않는 표준 컨테이너 : 배열, bitset, valarray, stack, queue, priorty_queue

  • 연속메모리 컨테이너 : list를 제외한 STL 시퀀스 컨테이너
  • 노드기반 컨테이너 : STL 연관 컨테이너, list





정리

  • 임의정렬을 사용할려면 연관컨테이너는 안된다.
  • 삽입이나 삭제시 컨테이너의 요소들이 밀려나는 일이 없어야 한다면 연속메모리 컨테이너는 안된다.
  • 배열과의 호환을 원하면 vector
  • 탐색속도가 중요하다면 해쉬컨테이너 -> 정렬된 백터 -> 연관 컨테이너 를 고려한다.
  • string 은 라이브러리 마다 참조카운터를 사용한 경우와 아닌 경우가 있으며 참조카운터 모드를 조절할수 있는 경우도 있다. 대용량 string인 rope 는 보통 참조카운팅을 이용한다.
  • 삽입과 삭제의 트랜잭션적 의미를 부여할려면 list
  • 반복자, 포인터, 참조자 무효화를 최소한 으로 하기 위해서는 노드기반 컨테이너.

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다