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::queue vs std::stack

항목 std::queue std::stack
구조 FIFO LIFO
삽입 위치
제거 위치
접근 가능 front(), back() top()

7. 주의사항

  • 반복자 제공하지 않으므로 직접 탐색 불가
  • 내부 컨테이너에 따라 성능 차이가 발생할 수 있음
  • 큐의 모든 요소를 확인하려면 pop() 반복으로 처리

글 이동

Comments