C++ STL 시리즈 4편: stack과 queue 사용법
지난 글에서는 STL의 deque 컨테이너 사용법을 살펴보았습니다.
이번 글에서는 STL에서 제공하는 **stack과 queue** 컨테이너를 정리하겠습니다.
두 컨테이너 모두 FIFO(First In First Out) 또는 LIFO(Last In First Out) 구조를 구현할 수 있는 자료구조로,
자료를 순차적으로 처리할 때 유용합니다.
1. stack이란?
stack은 **LIFO(Last In First Out)** 구조입니다.
즉, 가장 나중에 추가한 요소가 가장 먼저 삭제됩니다.
스택은 프로그램의 함수 호출, 되돌리기(undo) 기능 등에서 사용됩니다.
stack 선언과 초기화
#include <stack>
#include <iostream>
using namespace std;
int main() {
stack s; // stack 선언
s.push(10); // 요소 추가
s.push(20);
s.push(30);
cout << "Top: " << s.top() << endl; // Top: 30
s.pop(); // Top 요소 삭제
cout << "Top after pop: " << s.top() << endl; // Top: 20
}
stack 주요 함수
push(value)
: 요소 추가pop()
: 마지막 요소 제거top()
: 마지막 요소 확인empty()
: 비어 있는지 확인size()
: 요소 개수 확인
2. queue란?
queue는 **FIFO(First In First Out)** 구조입니다.
즉, 가장 먼저 추가한 요소가 가장 먼저 삭제됩니다. 큐는 작업 대기열, 이벤트 처리 등 순차적인 데이터 처리에 유용합니다.
queue 선언과 초기화
#include <queue>
#include <iostream>
using namespace std;
int main() {
queue q;
q.push(10); // 뒤에 추가
q.push(20);
q.push(30);
cout << "Front: " << q.front() << ", Back: " << q.back() << endl; // Front: 10, Back: 30
q.pop(); // Front 제거
cout << "Front after pop: " << q.front() << endl; // Front: 20
}
queue 주요 함수
push(value)
: 요소 추가pop()
: 앞 요소 제거front()
: 앞 요소 확인back()
: 뒤 요소 확인empty()
: 비어 있는지 확인size()
: 요소 개수 확인
3. stack과 queue vs deque
사실 stack과 queue는 내부적으로 deque를 기본 컨테이너로 사용합니다.
deque의 앞/뒤 삽입/삭제가 빠른 특성을 이용하여 스택과 큐 기능을 효율적으로 구현할 수 있습니다.
따라서 deque와 기능이 겹치지만, stack과 queue는 **LIFO/FIFO 용도로 제한된 인터페이스**를 제공하여 실수를 방지하고 코드 가독성을 높입니다.
컨테이너 | 구조 | 접근 | 사용 예 |
---|---|---|---|
stack | LIFO | Top | 함수 호출 스택, undo |
queue | FIFO | Front / Back | 작업 대기열, 이벤트 처리 |
deque | 양쪽 삽입/삭제 | 임의 접근 가능 | 큐/스택 구현, 앞뒤 삽입/삭제 |
반응형
'c++' 카테고리의 다른 글
[C++ STL 시리즈] 6편: unordered_set과 unordered_map 사용법 (0) | 2025.09.20 |
---|---|
[C++ STL 시리즈] 5편: set과 map 사용법 (0) | 2025.09.20 |
[C++ STL 시리즈] 3편: deque 사용 (1) | 2025.09.20 |
[C++ STL 시리즈] 2편: list 사용법 (0) | 2025.09.19 |
[C++ STL 시리즈] 1편: STL 개요 및 vector 사용법 (0) | 2025.09.19 |