算法扩充知识-优先队列

优先队列(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;

猜你喜欢

转载自blog.csdn.net/qq_27437197/article/details/87863870
今日推荐