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

C++ PriorityQueue Container

by 조훈이 2021. 7. 6.

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<intvector<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++ STL : 네이버 책 (naver.com)

728x90

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

C++ Queue Container  (0) 2020.12.18

댓글