C++中priority_queue优先级队列的初始化
优先级队列有3个可输入的参数
priority_queue< type, container, function >
例如:
priority_queue< int, vector<int>, less<int> > pq;
表示初始化一个大顶堆pq,同时由于C++默认为大顶堆,因此在初始化大顶堆时,后两个参数可以省略,写做:
priority_queue< int> pq;
小顶堆堆初始化为:
priority_queue< int, vector<int>, greater<int> > pq;
当你需要进行自定义排序时,你可以构造一个自己的比较器:
class Solution {
public:
int fun(vector<int>& input) {
priority_queue<int,vector<int>,cmp> pq;
//dosomething
return 0;
}
struct cmp{
bool operator() (int a, int b ){
//compare
return true;
}
};
};
当你需要用已有数组对优先级队列进行初始化时:
class Solution {
public:
int fun(vector<int>& input) {
priority_queue<int> pq(input.begin(),input.end());
//dosomething
return 0;
}
};