[C++] STL queue 사용법 & 예제 총정리
- Language/C , C++ , C#
- 2020. 9. 4.
queue란?
queue의 사전적 의미는 무엇을 기다리는 사람, 차량 등의 줄 혹은 줄을 서서 기다리는 것을 의미하는데 이처럼 줄을 지어 순서대로 처리되는 것이 큐라는 자료구조입니다. 큐는 데이터를 일시적으로 쌓아두기 위한 자료구조로 스택과는 다르게 FIFO(First In First Out)의 형태를 가집니다. FIFO 형태는 뜻 그대로 먼저 들어온 데이터가 가장 먼저 나가는 구조를 말합니다. queue는 C++ 표준 라이브러리(Standard Template Library)에 있는 정의 되어 있어 필요할 때마다 만들어 사용하지 않고 include 하여 사용하시면 편리합니다.
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<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의 기타 메서드
q.size(); // queue의 크기 출력
q.empty(); // queue가 비어있는지 check (비어있다면 true)
q.front(); // queue의 가장 첫번째 원소 출력
q.back(); // queue의 가장 마지막 원소 출력
그 밖에도 queue에는 크기를 구하는 size() 메서드와 queue가 비어있는지 확인하는 empty() 메서드(비어있다면 true, 그렇지 않다면 false를 return) queue의 가장 첫 번째 원소를 출력하는 front() 메서드와 맨 마지막 원소를 출력하는 back() 메서드가 있습니다.
'Language > C , C++ , C#' 카테고리의 다른 글
[C언어/C++] 포인터(Pointer) 사용법 & 예제 총정리 (2) | 2021.01.12 |
---|---|
[C언어/C++] 연산자 우선순위에 대하여 (0) | 2021.01.11 |
[C++] STL stack 사용법 & 예제 총정리 (1) | 2020.09.03 |
[C++] STL vector 사용법 & 예제 총정리 (8) | 2020.09.02 |