[C++] STL queue 사용법 & 예제 총정리

queue란?

queue의 사전적 의미는 무엇을 기다리는 사람, 차량 등의 줄 혹은 줄을 서서 기다리는 것을 의미하는데 이처럼 줄을 지어 순서대로 처리되는 것이 큐라는 자료구조입니다. 큐는 데이터를 일시적으로 쌓아두기 위한 자료구조로 스택과는 다르게 FIFO(First In First Out)의 형태를 가집니다. FIFO 형태는 뜻 그대로 먼저 들어온 데이터가 가장 먼저 나가는 구조를 말합니다. queue는 C++ 표준 라이브러리(Standard Template Library)에 있는 정의 되어 있어 필요할 때마다 만들어 사용하지 않고 include 하여 사용하시면 편리합니다.

 

Queue

Enqueue : 큐 맨 뒤에 데이터 추가
Dequeue : 큐 맨 앞쪽의 데이터 삭제

 

queue의 특징

1. 먼저 들어간 자료가 먼저 나오는 구조 FIFO(First In FIrst Out) 구조 
2. 큐는 한 쪽 끝은 프런트(front)로 정하여 삭제 연산만 수행함
3. 다른 한 쪽 끝은 리어(rear)로 정하여 삽입 연산만 수행함  

4. 그래프의 넓이 우선 탐색(BFS)에서 사용
5. 컴퓨터 버퍼에서 주로 사용, 마구 입력이 되었으나 처리를 하지 못할 때, 버퍼(큐)를 만들어 대기 시킴

 

 queue 사용법 

queue 선언

#include <queue>  // queue가 들어있는 헤더파일
queue<int> s;     //int형 큐 선언
queue<char>s;     //char형 큐 선언

queue를 선언하려면 <queue>라는 헤더 파일을 include 한 뒤 queue <type> name과 같은 형식으로 선언하면 됩니다. 

 

queue 값 추가

queue<int> q;  // int형 스택 선언
q.push(1);     // queue에 값 1 추가
q.push(2);     // queue에 값 2 추가
q.push(3);     // queue에 값 3 추가

queue에 값을 추가하고 싶다면 push(value)라는 메서드를 활용하면 됩니다. queue에 값을 계속해서 추가해나간다면 아래 그림과 같은 형태로 데이터가 쌓이게 됩니다.

Queue 값 추가

 

queue 값 삭제

queue<int> q;  // int형 큐 선언
q.push(1);     // queue에 값 1 추가
q.push(2);     // queue에 값 2 추가
q.push(3);     // queue에 값 3 추가
q.pop();       // queue에 값 제거

queue에서 값을 제거하고싶다면 pop()이라는 메서드를 사용하면 됩니다. pop을 하면 가장 앞쪽에 있는 원소의 값이 아래 그림과 같이 제거됩니다. 값을 제거한다기보다는 값을 빼낸다라는 의미에 가깝다고 할 수 있겠습니다.

Queue 값 삭제

 

queue의 기타 메서드

q.size();      // queue의 크기 출력
q.empty();     // queue가 비어있는지 check (비어있다면 true)
q.front();     // queue의 가장 첫번째 원소 출력
q.back();      // queue의 가장 마지막 원소 출력

그 밖에도 queue에는 크기를 구하는 size() 메서드와 queue가 비어있는지 확인하는 empty() 메서드(비어있다면 true, 그렇지 않다면 false를 return) queue의 가장 첫 번째 원소를 출력하는 front() 메서드와 맨 마지막 원소를 출력하는 back() 메서드가 있습니다.

댓글

Designed by JB FACTORY