优先队列自定义的注意点
自定义优先队列结构的注意点:
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