C++ Queue Container
본문 바로가기
C, C++/STL

C++ Queue Container

by 조훈이 2020. 12. 18.

// 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_typecontainer_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 선언. 

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()의 개념을 잘 이해할 수 있을 것이다.

728x90

'C, C++ > STL' 카테고리의 다른 글

C++ PriorityQueue Container  (0) 2021.07.06

댓글