더북(TheBook)

3.1 | 컨테이너 어댑터는 무엇인가?

 

컨테이너 어댑터는 2장에서 학습한 순차열 컨테이너를 다른 기능을 제공하는 순차열 컨테이너로 정의하기 위해 래핑하는 클래스 템플릿을 말한다. 다른 기능을 제공하기 위해 컨테이너의 기존 인터페이스를 확장(adapt)하기 때문에 이런 클래스 템플릿을 어댑터 클래스(adapter class)라 부른다.

stack<T> 컨테이너는 deque<T> 컨테이너를 푸시다운(push-down) 스택, 즉 후입선출(last-in first-out, LIFO)로 저장하는 방식으로 변환하는 어댑터 클래스 템플릿이다. stack<T> 템플릿은 stack 헤더에 정의되어 있다.

queue<T> 컨테이너는 deque<T> 컨테이너를 큐(queue), 즉 선입선출(first-in first-out, FIFO)로 저장하는 방식으로 변환하는 어댑터 클래스 템플릿이다. 일정 조건만 만족한다면 기반 컨테이너를 다른 컨테이너로 바꿀 수 있다. queue<T> 템플릿은 queue 헤더에 정의되어 있다.

priority_queue<T> 컨테이너는 vector<T> 컨테이너를 가장 큰 원소가 항상 앞에 오도록 원소들의 순서를 관리하는 큐로 변환하는 어댑터 클래스 템플릿이다. priority_queue<T> 템플릿은 queue 헤더에 정의되어 있다.

어댑터 클래스는 기반 순차열 컨테이너의 연산을 자신의 연산으로 변환한다. 어댑터 클래스의 연산은 직접 구현할 수도 있다. 어댑터 클래스를 사용하면 public 인터페이스의 단순함과 이를 사용하는 코드의 가독성이 장점이 된다. 각 컨테이너 어댑터에 대해서는 자세히 살펴볼 것이다.

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