[C++] Priority_Queue

yeolife ㅣ 2023. 7. 5. 00:30

특징

#include <queue>
  • FIFO (선입선출)
  • 우선순위 따른 정렬 (기본 내림차순)

 

생성

설명 코드
우선순위 큐 생성 priority_queue<int> pq

 

연산

설명 코드
우선 순위에 맞게 k 삽입 pq.push(k)
가장 큰 우선순위를 가진 원소 제거 pq.pop()
가장 큰 우선순위를 가진 원소 반환 pq.top()
우선순위 큐의 크기를 반환 pq.size()
우선순위 큐가 비어있으면 True, 아니면 False를 반환 pq.empty()

 

정렬 기준 바꾸기

  • 일반적인 정렬의 비교연산과 반대이다
오름차순 내림차순
greater<int> less<int>
return a > b return a < b
  • 우선순위 큐의 정렬을 커스텀할 때 구조체를 이용한다
//first를 기준으로 내림차순 정렬 
// first가 같으면 second를 기준으로 오름차순 정렬

struct cmp{
    bool operator()(pair<int,int>& a, pair<int,int>& b){
    	if(a.first == b.first)
        	return a.second > b.second;
        return a.first < b.first;
    }
};

priority_queue<pair<int,int>, vector<pair<int,int> >, cmp> pq;