Priority Queue란?
- 원소 중에서 가장 큰 값이 Top을 유지하도록, 우선순위가 가장 크도록 설계되어 있다. 또한 우선순위 큐는 내부적으로 Heap이라는 자료구조를 사용하고 있다.
- push, pop, top, empty, size
사용법
#include <iostream>
#include <queue>
#include <functional> // greater, less
using namespace std;
int main() {
priority_queue<int> pq; // - > priority_queue<int, vector<int>, less<int>> pq;
//큰 값이 top
// 우선순위 큐에 원소를 삽입 (push) 한다
pq.push(4);
pq.push(7);
pq.push(3);
pq.push(1);
pq.push(10);
cout << "우선순위 큐 사이즈 : " << pq.size() << "\\n";
// 우선순위 큐가 비어 있지 않다면 while 문을 계속 실행
while (!pq.empty()) {
cout << pq.top() << '\\n';
pq.pop();
}
return 0;
}
비교함수 지정하기
- class 사용 (struct도 가능)
- 연산자 오버로딩
class cmp{
public:
bool operator()(vector<int> a, vector<int> b){
return a[1]>b[1];
}
};
//priority queue요소는 길이가 2인 벡터임
//벡터의 1번째 요소를 기준으로 정렬하기 위해 사용
int main(){
priority_queue<vector<int>,vector<vector<int>>,cmp> pq;
}