💚ref.
- cplusplus Reference: std::queue
- Microsoft Learn: queue 클래스
1. queue 클래스
컨테이너 어댑터로 FIFO 큐 자료구조를 제공하는 템플릿 클래스이다. deque
클래스의 push_front
, pop_back
등의 기능을 제한해 큐의 자료구조를 효과적으로 사용할 수 있도록 한다.
선입선출 구조를 가진 큐. 스택과 다르게 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;
}
|
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;
}
|
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