더북(TheBook)

3.7 | 요약

 

컨테이너 어댑터 템플릿은 표준 순차열 컨테이너에 특별한 인터페이스를 제공한다. 원소 저장에 사용된 컨테이너는 어댑터 클래스가 제공하는 인터페이스로만 접근할 수 있게 된다. 필요한 기능이 있다면 컨테이너 어댑터에서 고르자. 이들 인터페이스는 간단하고, 표준 컨테이너를 이용해 스스로 같은 기능을 구현하기보다 훨씬 더 쉽다. algorithm 헤더에서 제공하는 함수 템플릿을 사용해 표준 컨테이너에 힙을 만드는 기능은 priority_queue 컨테이너 어댑터와 같은 기능을 제공하지만, 원소를 저장하는 컨테이너에 직접 접근할 수 있는 유연성을 제공한다. 다음은 이 장에서 다룬 핵심 내용이다.

stack<T> 컨테이너 어댑터 템플릿은 푸시다운 스택을 구현하며 후입선출(LIFO) 방식으로 동작한다. 따라서 stack<T> 인스턴스는 원소를 저장하는 컨테이너로 vector<T>, deque<T>, list<T>를 사용해서 정의할 수 있다.

queue<T> 컨테이너 어댑터 템플릿은 큐를 정의하며 선입선출(FIFO) 방식으로 동작한다. queue<T> 인스턴스는 원소를 저장하는 컨테이너로 deque<T>, list<T>를 사용해서 정의할 수 있다.

priority_queue<T> 컨테이너 어댑터 템플릿은 우선순위 큐를 구현하며 우선순위가 가장 높은 원소가 항상 다음에 가져올 원소가 된다. priority_queue<T> 인스턴스는 원소를 저장하는 컨테이너로 vector<T>deque<T>를 사용해서 정의할 수 있다.

힙은 노드들이 같은 정렬 순서로 정렬된 이진 트리를 말한다. 예를 들어 트리에서 각 부모 노드가 자식 노드보다 같거나 큰, 최대 힙이 되거나 각 부모 노드가 자식보다 같거나 작은, 최소 힙이 될 수 있다.

make_heap() 함수 템플릿은 랜덤 액세스 반복자로 지정된 범위의 원소들을 힙으로 생성한다. 기본 동작은 최대 힙을 만들지만, 힙 순서를 정하는 원소 비교 함수를 정의한 함수 객체로 기본 동작을 바꿀 수 있다. 원소를 추가하거나 범위에서 첫 번째 원소를 제거한 후에 힙 순서를 유지하는 push_heap()pop_heap() 같은 힙 연산을 지원한다.

컨테이너에 포인터를 저장할 수 있다. 스마트 포인터를 사용하면 필요 없을 때 자유 공간에서 객체가 삭제되는 걸 보장한다.

컨테이너에 포인터를 저장한다면 반드시 알고리즘에 필요한 연산이나 비교 연산을 함수 객체로 제공해야 한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.