一.如果是正常的大根堆,使用priority_queue<int> pq;
二.如果是正常的小根堆,使用priotity_queue<int,vector<int>,greater<int>> pq;
三.其他情况都是按照大根堆重定义 operater <,此时如果返回true,说明前值优先级低于后值。
1. 声明:priority_queue<int> pq
定义: bool operator < (struct/class a, struct/class b)
注意:如果优先队列自己有这个运算符(不是自己定义的struct,class),这样定义是无效的。必须用下面的方法。
2.参数为指针的时候不可以直接写在外面。
声明:priority_queue<struct/class,vector<struct/class>,cmp>
定义:struct cmp {
bool operator() (struct/class a, struct/class b)
//a>b是小根堆, a<b是大根堆
}
3.或者定义一个class或者struct的时候写在里面。
声明:priority_queue<int> pq
定义:class point {