Priority Queue Container
Priority Queue 란?
우선순위 queue 를 구현한 template class 이다. 기존의 queue container 에 오름차순, 내림차순을 사용하여 우선순위를 부여 한 것이다.
<queue> header file 에 있다.
Queue container 설명 Link : 2021.02.09 - [C++ Header/#include ] - Queue container
형식
template |
template <typename T,
typename Container = vector<T>,
typename Comp = less<typename Container::value_type>> class priority_queue
생성자 |
std::priority_queue<data_type> pq;
// default container type : vector<data_type>, default 정렬기준 : less<data_type>
std::priority_queue<data_type, container_type> pq;
// default 정렬기준 : less
std::priority_queue<data_type, container_type, [정렬 기준]> pq;
[정렬 기준] : 오름차순, 내림차순 |
less<data_type> : 오름차순 (default 정렬 기준)
greater<data_type> : 내림차순
내림차순 priority_queue의 top() 의 값은 max vaule, 오름차순 priority_queue의 top() 의 값은 min value 가 된다.
멤버 함수 |
bool empty() const
- 해당 priority_queue가 비어있으면 true 를, 비어있지 않으면 false 를 return 한다.
size_type size() const
- 해당 priority_queue의 size 를 return 한다.
value_type& top()
- 해당 priority_queue의 top 원소를 return 한다.
void push(const value_type& x)
- 해당 priority_queue에 원소를 추가한다.
void pop();
- 해당 priority_queue의 top()에 해당되는 원소를 제거한다.
Code 예시
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
#include <iostream>
#include <queue>
#include <vector>
#include <iomanip>
using namespace std;
int main() {
priority_queue<int> LESS;
priority_queue<int, vector<int>, greater<int>> GREATER;
cout << boolalpha;
cout << " ******************** 원소 입력 전 ********************" << '\n' << '\n';
cout << " LESS priority queue 가 비어있습니까? " << LESS.empty() << '\n';
cout << " size of LESS priority queue : " << LESS.size() << '\n' << '\n';
cout << " GREATER priority queue 가 비어있습니까? " << GREATER.empty() << '\n';
cout << " size of GREATER priority queue : " << GREATER.size() << '\n' << '\n';
LESS.push(10); GREATER.push(10);
LESS.push(3); GREATER.push(3);
LESS.push(7); GREATER.push(7);
LESS.push(1); GREATER.push(1);
LESS.push(14); GREATER.push(14);
cout << " ******************** 원소 입력 후 ********************" << '\n' << '\n';
cout << " LESS priority queue 가 비어있습니까? " << LESS.empty() << '\n';
cout << " size of LESS priority queue : " << LESS.size() << '\n' << '\n';
cout << " GREATER priority queue 가 비어있습니까? " << GREATER.empty() << '\n';
cout << " size of GREATER priority queue : " << GREATER.size() << '\n' << '\n';
cout << " LESS priority queue container : ";
for (int i = 0; i < 5; i++) {
cout << setw(4) << LESS.top();
LESS.pop(); // 다음 원소를 print 하기 위해 현재 top 원소를 pop
}
cout << "\n\n GREATER priority queue container : ";
for (int i = 0; i < 5; i++) {
cout << setw(4) << GREATER.top();
GREATER.pop(); // 다음 원소를 print 하기 위해 현재 top 원소를 pop
}
cout << '\n';
}
|
cs |
< 실행 결과>
'C, C++ > STL' 카테고리의 다른 글
C++ Queue Container (0) | 2020.12.18 |
---|
댓글