// Queue Container
What is Queue Container?
선입선출(FIFO : First - In, First - Out)의 원리에 따라 객체의 삽입 및 삭제를 수행하는 자료의 저장 공간이다.
※ 선입선출 이란? 말 그대로 저장 공간에 먼저 들어간 데이터의 값이 먼저 나오는 형태를 말한다. 비유를 하자면, 휴지심같이 위아래가 뚫린 원기동 모양의 통이 있다고 할때 이 원통 위로 계속해서 테니스 공을 넣으면 원통의 아래 부분으로 공이 빠져나올 것이다. 또한 먼저 넣은 테니스 공이 아래로 먼저 나올것이다. 이러한 원리라고 생각하면 된다. |
How to use
queue의 선언 |
#include <queue> // queue 헤더파일 내에 있다.
using namepsace std; // queue는 std namespace에 속한다.
queue<data_type> test;
* default container_type : deque<data_type>
queue<data_type, container_type> test;
* default container_type : deque<date_type>
* another container_type : list<data_type>
- list container 사용시, #include <list> 필요
* vector container 가 불가능한 이유 : queue는 back()에서 push()하고, front()에서 pop()하는 구조인데
vector에선 front()에서 pop()을 할 수 없으므로.
queue의 멤버함수 |
queue<int> pracQueue;
- int 자료형을 가진 pracQueue 라는 queue 선언.
위 사진은 현재 4, 2, 7, 5, 6, 9가 삽입이 되어있는 queue 이다. 이 queue를 위 4번 line에서 선언한 pracQueue 라고 하고 아래 멤버함수들을 보면 된다.
pracQueue . front();
- queue 의 맨 앞 부분의 객체값을 참조하여 반환.
- 위 예시 queue 에서 pracQueue . front() 의 값은 4가 된다.
- 비어있는 queue 에서 실행을 한다면 에러가 발생한다.
pracQueue . back();
- queue 의 맨 뒷 부분의 객체값을 참조하여 반환.
- 위 예시 queue 에서 pracQueue . back() 의 값은 9가 된다.
pracQueue . push(e);
- queue 의 뒷 부분에 객체 e를 삽입.
- 위 예시 queue 에서 맨 뒷 부분의 객체값 pracQueue . back() == 9 이지만
- 위 사진처럼 pracQueue . push(2); 를 한다고 하면 pracQueue . back() 의 값은 2가 된다.
pracQueue . pop();
- queue 의 맨 앞 부분의 객체를 삭제.
- 위 예시 queue 에서 pracQueue . pop(); 를 하면 pracQueue . front() 의 값인 4가 pop되고
그 후 2가 이 queue 의 front() 값이 될 것이다.
- 비어있는 queue 에서 실행을 한다면 에러가 발생한다.
pracQueue . size();
- queue 안의 객체의 수를 반환한다.
- 위 예시에서 push(), pop()을 무시하면 pracQueue.size() == 6이다.
pracQueue . empty();
- queue 가 비었으면 true 를, 그렇지 않으면 false 를 반환한다.
- 위 예시에선 비어있지 않으므로 pracQueue.empty() == false 이다.
아래 그림을 참고하면 push() 와 pop()의 개념을 잘 이해할 수 있을 것이다.
'C, C++ > STL' 카테고리의 다른 글
C++ PriorityQueue Container (0) | 2021.07.06 |
---|
댓글