优先队列(priority queue)具有最高级先出的行为特征。
优先队列是0个或多个元素的集合,每个元素都有一个优先权或值,对优先队列执行的操作有:
- 查找
- 插入一个新元素
- 删除
说明:
查找和删除操作,针对搜索优先权最大的元素。
若有相同的优先权,查找与删除操作可根据任意优先权进行。
优先队列:
priority_queue<int, vector<int>,cmp > que;
函数参数分别为:数据类型,容器类型,比较函数。
控制优先队列的优先级,常用方法:
方法1:使用C++自带的库函数<functional>
priority_queue<int, vector<int>,less <int> > que1; //最大值优先
扫描二维码关注公众号,回复:
5278086 查看本文章
priority_queue<int, vector<int>,greater <int> > que2; //最小值优先
方法2:自定义优先级,队列元素为数值型
struct cmp1{
bool operator () (int &a,int &b){
return a<b; //最大值优先
}
}
priority_queue<int, vector<int>,cmp1 > que3;
方法3:自定义优先级,队列元素为结构体型
struct node1{
int x,y;
bool operator < (const node1 &a) const{
return x<a.x; //最大值优先
}
};
priority_queue<node1> que5;
方法4:自定义优先级,队列元素为结构体型
struct node3{
int x,y;
};
bool operator < (const node3 &a,const node3 &b){
return a.x<b.x; //按成员x最大值优先
}
priority_queue<node3> que7;