#include <queue>
💥 STL
priority_queue는 최대 힙, 즉 가장 뒤의 원소를 높은 우선순위로 두는 STL이다. 💥
priority_queue는 set보다 수행 속도가 빠르고, 공간도 적게 차지한다.int arr[] = {1, 2, 3, 4};
priority_queue<int> pq; // 기본적으로 최대 힙이 됩니다. 💥
priority_queue<int> pq(arr, arr+4); // 이 경우에는 vector와 다르게, 1, 2, 3, 4의 순서로 저장된다는 점에 주의합시다. (4가 top()입니다.)
while(!pq.empty()) {
cout << pq.top() << " "; // 4, 3, 2, 1로 출력이 되겠죠. queue의 front() 역할을 pq에선 top()이 해 준다는 점에 주의합시다.
pq.pop();
}
priority_queue <int, vector<int>, greater<int>> pq; // 이 경우에는 4, 3, 2, 1(top)의 순서로 저장됨.
class cmp {
public:
bool operator() (int a, int b) {
if(abs(a) != abs(b)) return abs(a) > abs(b);
return a > 0 && b < 0;
}
};
return a > b 일 때, b가 top쪽으로 정렬이 된다는 점이다.pq를 vector로 볼 때, 오른쪽 끝에 top이 위치한다고 봐도 될 것 같다.priority_queue는 최대 힙, 즉 가장 뒤의 원소를 높은 우선순위로 두는 STL이다. 💥