옐그's 코딩라이프

[c++] priority queue 오름차순 정렬하기 본문

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