[c++] 데크(deque) 컨테이너

데크(Deque)는 “Double-Ended Queue”의 약자로, 양 끝에서 삽입과 삭제가 모두 가능한 자료 구조입니다. C++의 표준 라이브러리에서는 std::deque로 구현되어 제공됩니다. 이 데크 컨테이너는 각 삽입 지점에서의 시간 복잡도가 O(1)로 매우 효율적입니다.

데크의 기본 사용법

데크를 사용하기 위해서는 <deque> 헤더 파일을 포함해야 합니다.

#include <deque>
using namespace std;

데크를 선언하고 초기화하는 방법은 다음과 같습니다.

deque<int> myDeque; // 비어 있는 데크
deque<int> myDeque = {1, 2, 3, 4, 5}; // 초기값을 가지는 데크

데크에 요소를 삽입하거나 삭제하는 방법은 다음과 같습니다.

myDeque.push_back(10);  // 뒷쪽에 10 삽입
myDeque.push_front(20); // 앞쪽에 20 삽입
myDeque.pop_back();     // 뒷쪽 요소 삭제
myDeque.pop_front();    // 앞쪽 요소 삭제

데크의 활용 예제

데크 컨테이너는 양 끝에서의 삽입과 삭제가 가능하기 때문에 큐나 스택 등의 다양한 용도로 활용할 수 있습니다. 예를 들어, 데크를 사용하여 원형 큐나 아스키 레벨에서 물체를 나타내는 프로그램을 구현할 수 있습니다.

deque<int> circleQueue;
circleQueue.push_back(1);  // enqueue
int frontElement = circleQueue.front(); // peek
circleQueue.pop_front();    // dequeue

위와 같이 데크는 다양한 상황에서 유연하게 활용될 수 있는 강력한 컨테이너입니다.

참고 자료