2 minute read

💚ref.

  1. cplusplus Reference: std::queue
  2. Microsoft Learn: queue 클래스
    • 함수 종류와 예제 전반 참고



1. queue 클래스

컨테이너 어댑터로 FIFO 큐 자료구조를 제공하는 템플릿 클래스이다. deque 클래스의 push_front, pop_back등의 기능을 제한해 큐의 자료구조를 효과적으로 사용할 수 있도록 한다.


image

선입선출 구조를 가진 큐. 스택과 다르게 front와 back 원소 모두 접근할 수 있다.

queue 클래스를 활용하려면 헤더파일 <queue> 을 포함해야 한다. queue<(자료형)> (변수명);으로 queue 변수를 선언한다.



2. 멤버 함수

함수명 기능
push queue 의 말단에 원소 추가
size queue 의 길이 반환
back queue 의 가장 마지막(가장 최근에 추가된) 원소 반환
empty queue가 비어 있는지 여부 확인
front queue 의 첫 번째 원소 반환
pop queue 의 첫 번째 원소 제거


2.1. queue.push(elem)

queue의 말단(가장 최근에 추가된 원소 뒤)에 새 원소를 추가한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <queue>
#include <iostream>
using namespace std;

int main()
{
    queue <int> q1;

    q1.push(10);

    cout << "q1.size(): " << q1.size() << endl;
    cout << "q1.back(): " << q1.back() << endl << endl;
}
1
2
q1.size(): 1
q1.back(): 10


2.2. queue.size()

queue에 들어 있는 원소 개수(큐의 현재 길이)를 반환한다.


1
2
3
4
5
6
7
8
9
10
11
12
#include <queue>
#include <iostream>
using namespace std;

int main()
{
    queue <int> q1;
    cout << "q1.size(): " << q1.size() << endl;

    q1.push(1);
    cout << "q1.size(): " << q1.size() << endl;
}
1
2
q1.size(): 0
q1.size(): 1


2.3. queue.back()

queue의 가장 마지막에 추가된 원소를 반환한다. queue가 비어 있으면 반환 값이 할당되지 않는다. (=> 런타임 오류 발생)


예제 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <queue>
#include <iostream>
using namespace std;

int main()
{
    queue <int> q1;

    q1.push(10);
    q1.push(11);

    cout << "q1.back(): " << q1.back() << endl;
}
1
q1.back(): 11


2.4. queue.empty()

queue가 비어 있는지 확인한다. 반환값은 bool으로 queue가 비어 있으면 true를, 비어 있지 않으면 false를 반환한다.


예제 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <queue>
#include <iostream>
using namespace std;

int main( )
{
   queue <int> q1, q2;

   q1.push( 1 );

   if ( q1.empty( ) )
      cout << "q1.empty(): true" << endl;
   else
      cout << "q1.empty(): false" << endl;

   if ( q2.empty( ) )
      cout << "q2.empty(): true" << endl;
   else
      cout << "q2.empty(): false" << endl;
}
1
2
q1.empty(): false
q2.empty(): true


2.5. queue.front()

queue의 첫 번째 원소를 반환한다. queue가 비어 있으면 정의되지 않은 큐 요소에 접근해 런타임 에러를 발생시킨다.


1
2
3
4
5
6
7
8
9
10
11
12
13
#include <queue>
#include <iostream>
using namespace std;

int main()
{
    queue <int> q1;

    q1.push(10);
    q1.push(11);

    cout << "q1.front(): " << q1.front() << endl;
}
1
q1.front(): 10


2.6. queue.pop()

queue의 최상단 원소(첫 번째 원소)를 제거한다. pop()함수를 사용하려면 queue에 적어도 하나 이상의 원소가 들어 있어야 한다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <queue>
#include <iostream>
using namespace std;

int main()
{
    queue <int> q1;

    q1.push(10);
    q1.push(20);
    q1.push(30);

    cout << "q1.size(): " << q1.size() << endl;
    cout << "q1.front(): " << q1.front() << endl << endl;

    q1.pop();

    cout << "q1.size(): " << q1.size() << endl;
    cout << "q1.front(): " << q1.front() << endl;
}
1
2
3
4
5
q1.size(): 3
q1.front(): 10

q1.size(): 2
q1.front(): 20


Leave a comment