默认大顶堆:
priority_queue<int> q1;
小顶堆:
priority_queue<int, vector<int>, greater<int> > q2;
因为priority_queue是模板,所以创建对象时需要传入模板参数,但是由于模板参数内部是具有默认值的,所以创建大堆时可以只传递元素类型即可。但创建小堆的时候,模板参数是不可以省略的。
自定义比较类型,如果是“<” 默认就是大顶堆,反之小顶堆:
class Solution {
public:
// 小顶堆,重载运算符()
class mycomparison {
public:
bool operator()(const pair<int, int>& lhs, const pair<int, int>& rhs) {
return lhs.second > rhs.second;
}
};
// 定义一个小顶堆
priority_queue<pair<int, int>, vector<pair<int, int>>, mycomparison> pri_que;
};