[C++] Queue
1. 개요
std::queue는 선입선출(FIFO, First-In-First-Out) 방식의 컨테이너 어댑터입니다. <queue> 헤더에 정의되어 있으며, 기본적으로 std::deque를 기반으로 동작합니다.
#include <queue>
std::queue<int> q;
2. 주요 특징
- FIFO 구조
- front에서 제거, back에 삽입
- 반복자 제공하지 않음
- 내부 컨테이너는 기본적으로
deque사용 (vector는 불가)3. 주요 멤버 함수
| 함수 | 설명 |
empty() |
큐가 비었는지 확인 |
size() |
요소 수 반환 |
front() |
첫 번째 요소 반환 |
back() |
마지막 요소 반환 |
push(val) |
요소 추가 (뒤에 삽입) |
pop() |
요소 제거 (앞에서 제거) |
emplace(args...) |
직접 생성하여 추가 |
swap(other) |
다른 큐와 교환 |
4. 예제 코드
#include <iostream>
#include <queue>
using namespace std;
int main() {
queue<int> q;
q.push(10);
q.push(20);
q.push(30);
cout << "Front: " << q.front() << ", Back: " << q.back() << endl;
q.pop();
cout << "After pop, Front: " << q.front() << endl;
while (!q.empty()) {
cout << "Popped: " << q.front() << endl;
q.pop();
}
return 0;
}
5. 내부 컨테이너 지정
#include <queue>
#include <list>
std::queue<int, std::list<int>> q2;
- 내부 컨테이너는
deque,list가능 (vector는 불가) - 필요한 조건:
front(),back(),push_back(),pop_front()지원6.
std::queuevsstd::stack
| 항목 | std::queue |
std::stack |
| 구조 | FIFO | LIFO |
| 삽입 위치 | 뒤 | 뒤 |
| 제거 위치 | 앞 | 뒤 |
| 접근 가능 | front(), back() | top() |
7. 주의사항
- 반복자 제공하지 않으므로 직접 탐색 불가
- 내부 컨테이너에 따라 성능 차이가 발생할 수 있음
- 큐의 모든 요소를 확인하려면
pop()반복으로 처리
공유하기
Twitter Facebook LinkedIn글 이동
Comments