C++ STL 시리즈 3편: deque 사용법
지난 글에서는 STL의 list 컨테이너를 살펴보았습니다.
이번 글에서는 STL의 deque(Double Ended Queue) 컨테이너를 다뤄보겠습니다.
deque는 vector와 list의 장점을 결합한 자료구조로, 양쪽 끝에서 삽입과 삭제가 모두 빠릅니다.
1. deque란?
deque는 양쪽 끝에서 요소를 삽입(push)하거나 삭제(pop)할 수 있는 컨테이너입니다.
vector처럼 임의 접근이 가능하며, list처럼 앞뒤 삽입과 삭제가 효율적입니다.
따라서 큐(Queue)나 스택(Stack)을 구현할 때 매우 유용합니다.
deque 선언과 초기화
#include <deque>
#include <iostream>
using namespace std;
int main() {
deque dq; // 빈 deque 선언
deque dq2 = {1,2,3}; // 초기화
}
요소 삽입 및 삭제
// 뒤에 추가 / 삭제
dq.push_back(10);
dq.pop_back();
// 앞에 추가 / 삭제
dq.push_front(5);
dq.pop_front();
요소 접근
// 인덱스 접근
cout << dq[0] << endl;
cout << dq.at(0) << endl;
반복자를 이용한 순회
for(deque::iterator it = dq.begin(); it != dq.end(); ++it)
cout << *it << " ";
// C++11 이후 range-based for
for(int n : dq)
cout << n << " ";
2. vector, list와 deque 비교
컨테이너 | 임의 접근 | 앞 삽입/삭제 | 뒤 삽입/삭제 | 사용 용도 |
---|---|---|---|---|
vector | O(1) | O(n) | O(1) | 임의 접근이 중요한 경우 |
list | 불가 | O(1) | O(1) | 삽입/삭제가 빈번한 경우 |
deque | O(1) | O(1) | O(1) | 큐/스택 구현, 앞뒤 삽입/삭제 필요 시 |
3. deque 활용 예제
#include <deque>
#include <iostream>
using namespace std;
int main() {
deque dq;
dq.push_back(10); // 뒤에 추가
dq.push_front(5); // 앞에 추가
dq.push_back(20);
// 출력
for(int n : dq)
cout << n << " "; // 5 10 20
dq.pop_front(); // 앞 삭제
dq.pop_back(); // 뒤 삭제
// 출력
for(int n : dq)
cout << n << " "; // 10
}
정리
이번 글에서는 STL의 deque 컨테이너 사용법을 살펴보았습니다.
deque는 vector와 list의 장점을 결합하여 임의 접근과 앞뒤 삽입/삭제가 모두 빠릅니다.
큐나 스택을 구현할 때 매우 유용하며, 앞뒤 요소를 자주 추가/삭제해야 하는 상황에서 vector보다 효율적입니다.
다음 글에서는 STL의 stack과 queue 컨테이너를 살펴보고, deque와의 차이점과 활용법을 다룰 예정입니다.
반응형
'c++' 카테고리의 다른 글
[C++ STL 시리즈] 5편: set과 map 사용법 (0) | 2025.09.20 |
---|---|
[C++ STL 시리즈] 4편: stack과 queue 사용법 (0) | 2025.09.20 |
[C++ STL 시리즈] 2편: list 사용법 (0) | 2025.09.19 |
[C++ STL 시리즈] 1편: STL 개요 및 vector 사용법 (0) | 2025.09.19 |
Visual Studio C++ MFC CRect 사용법 (0) | 2025.09.18 |