프로그래밍 언어/[ C++ ]

[ C++ ] 14. STL 컨테이너

kim.svadoz 2021. 2. 17. 13:14
반응형

STL 컨테이너

컨테이너(Container)는 다른 객체들을(원소) 보관하는 하나의 커다란 보관소라고 볼 수 있다. 특히, STL 컨테이너는 클래스 템플릿(class template) 의 형태로 구현되어 있기 때문에 임의의 타입의 원소들을 위한 컨테이너를 만들 수 있다. 물론 한 컨테이너에는 한 가지 종류의 객체들만 보관할 수 있다

컨테이너는 자신이 보관하는 원소(element)들의 메모리를 관리하며, 각각의 원소에 접근할 수 있도록 멤버 함수를 제공해준다. 컨테이서 상에서 원소에 접근하는 방법으로 크게 두 가지가 있는데, 하나는 직접 함수를 호출해서 접근하는 것이고, 다른 하나는 반복자(iterator) 을 이용해서 접근하는 것이다. 이에 관해서는 나중에 설명하도록 하겠다.

또한 표준 라이브러리에서는, 여러가지 형태의 컨테이너를 제공하고 있기에, 프로그래머가 자신의 상황에 적합한 컨테이너를 고를 수 있다. 예컨대 동적 배열(vector), 큐(queue), 스택(stack), 힙(priority_queue), 링크드 리스트 (list) 트리 (set), 연관 컨테이너 (map) 등등이 지원되고 있다.

한 가지 유의할 사항은 스택(stack), 큐(queue), 우선순위 큐(priority_queue) 들로 이들은 컨테이너 어댑터(container adaptor) 이다. 이들은 다른 컨테이너 클래스들을 상속 받아서 다른 컨테이터 클래스의 객체에 특정한 인터페이스를 제공해준다.

이를 통해 원래 컨테이너의 기능을 제한하고, 어댑터가 제공하는 인터페이스를 사용할 수 있게 된다. 예컨대 stackdeque 에 작용한다면, dequestack 이 제공하는 top, pop, push 등의 인터페이스를 사용할 수 있게 되는 것이다.

컨테이너 클래스 템플릿

순차 컨테이너 (Sequence Container)

  • vector : 벡터 (Vector)

  • deque : 데크 (double ended queue)

  • list: 리스트 (List)

컨테이너 어댑터 (Container Adaptor)

  • stack : LIFO (Last in First out) 스택

  • queue : FIFO (First in First out)

  • priority_queue : 우선순위 큐 (Priority queue)

연관 컨테이너

  • set : Set

  • multiset : 여러 키를 가지는 set

  • map : Map

  • multimap : 여러 키를 가지는 map

  • bitset : Bitset

출처 : https://modoocode.com/174

반응형