c++/개념정리
[c++] priority queue 오름차순 정렬하기
옐그멍이
2024. 2. 14. 23:21
priority queue 오름차순 정렬하기 방법
1. greater 함수 쓰기
2. compare 구조체 정의해서 사용하기
1. greater 함수 쓰기
typedef tuple<int, int, int> t_iii;
priority_queue<t_iii, vector<t_iii>, greater<t_iii>> pq;
위와 같이 priority_queue<타입, vector<타입>, greater<타입>> pq; 로 정의해주면 된다!
2. compare 구조체 정의해서 사용하기
typedef tuple<int, int, int> t_iii;
struct Compare{
bool operator() (t_iii x, t_iii y){
if(get<0>(x) != get<0>(y)) return get<0>(x) < get<0>(y);
if(get<1>(x) != get<1>(y)) return get<1>(x) < get<1>(y);
else return get<2>(x) < get<2>(y);
}
};
priority_queue<t_iii, vector<t_iii>, Compare> pq;
지난번에 sort함수의 compare는 bool로 반환하는 함수면 됐었다. 하지만 priority_queue에서는 Compare 구조체를 정의하고 operator에서 어떤식으로 정렬할 것인지 정의해주어야 한다.
728x90