优先队列自定义的注意点

自定义优先队列结构的注意点:
1.优先队列顺序和自己定义的是反的,而且默认大根堆
2.需要自己定义顺序的时候。1)需要写出container,一般就是vector 2)写比较器就是像自己这里写的这样。
3.一般如果不是自定义结构的话,而且只需要改为小根堆,使用greater就行

比较器的例子:

struct cmp {
    bool operator() (pair<int, pair<int, int>>& p1, pair<int, pair<int, int>>& p2) {
        return p1.first > p2.first;
    }  
};

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

不是像其他定义一个比较函数就行了。

省事使用greater就行:

priority_queue<pair<int, pair<int, int>>, vector<pair<int, pair<int, int>>>, greater<pair<int, pair<int, int>>>> pq;//val, row, idx
posted @ 2019-11-03 16:07  于老师的父亲王老爷子  阅读(20)  评论(0编辑  收藏  举报