기본 패턴
cpp
std::stack<int> st;
st.push(10);
st.push(20);
st.pop();
std::queue<int> q;
q.push(1);
q.push(2);설명
- 이 셋은 모두 "컨테이너 adaptor"라서, 내부 저장소 위에 특정 접근 규칙만 노출하는 형태입니다.
stack은 LIFO,queue는 FIFO,priority_queue는 우선순위가 가장 큰 원소부터 꺼내는 구조로 이해하면 기본 그림이 잡힙니다.- 공통점은 원소 전체를 자유롭게 순회하기보다, 자료구조의 핵심 연산만 제한적으로 제공한다는 점입니다.
- 그래서 알고리즘 문제나 그래프 탐색, 작업 스케줄링처럼 특정 접근 순서가 중요한 문제와 잘 맞습니다.
- "벡터처럼 보관"이 아니라 "어떤 순서로 꺼낼 것인가"가 이 자료구조들의 핵심 선택 기준입니다.
짧은 예제
cpp
#include <iostream>
#include <queue>
#include <stack>
int main() {
std::priority_queue<int> pq;
pq.push(5);
pq.push(1);
pq.push(9);
std::cout << pq.top() << "\n";
}빠른 정리
| 항목 | 설명 |
|---|---|
stack | 마지막에 넣은 것을 먼저 꺼냄 |
queue | 먼저 넣은 것을 먼저 꺼냄 |
priority_queue | 우선순위가 높은 원소부터 꺼냄 |
| adaptor | 내부 컨테이너 위에 제한된 인터페이스를 제공 |
| 사용 예 | DFS, BFS, 스케줄링, 우선순위 처리 |
주의할 점
priority_queue는 자동 정렬된 전체 시퀀스를 제공하는 컨테이너가 아닙니다. 가장 우선순위가 높은 원소 접근에 특화된 구조라는 점을 먼저 기억하는 편이 좋습니다.