본문 바로가기

예전/STL

[STL] 컨테이너


컨테이너


컨테이너란 부둣가에 많이 보이는 박스로, C++에선

비슷한 성질의 객체를 한군데에 모아 관리하고 저장하는 용기라는 뜻이다.


STL의 컨테이너는 크게 순차 컨테이너와 정렬 연관 컨테이너로 나눌 수 있다.




- 순차 컨테이너 ( Sequence Container )


순차 컨테이너는 시퀀스 컨테이너 라고도 불린다. 시퀀스라는 말은 일렬로 나열되어 있다는 뜻이다.

순차 컨테이너는 자료를 순차적으로 저장하는 방식에 있어 가장 일반적인 컨테이너이다.


순차 컨테이너에는 Vector, List, String, Deque 이 있다.



- 정렬 연관 컨테이너 ( Sorted Associated container )


정렬 연관 컨테이너란 컨테이너 속의 자료들이 규칙에 따라 연관 즉, 정렬 되어있는 컨테이너 이다.

일정한 규칙으로 정렬되어있기 때문에 검색속도가 빠른 것이 장점이다.


정렬 연관 컨테이너에는 map, set이 있다.




또 다르게는 연속 메모리 기반 컨테이너와 노드 기반 컨테이너로도 나눌 수 있다.



- 연속 메모리 기반 컨테이너


연속 메모리 기반 컨테이너란 즉 배열로 된 컨테이너로 자료의 검색은 빠르지만 삽입 이나 삭제를 할 때에는 메모리를 재할당하고 컨테이너를 복사해야하므로 시간이 오래 걸린다.


연속 메모리 기반 컨테이너에는 Vector, String, Deque 이 있다.



- 노드 기반 컨테이너


이름 그대로 노드로 되어있는 컨테이너이다. 


노드 기반 컨테이너에는 List 와 map, set이 있다.

List는 일반적인 노드 형식이고, map과 set은 트리 형식이다.