优先队列的详解
来源:互联网 发布:linux 用户环境变量 编辑:程序博客网 时间:2024/06/05 06:52
在介绍优先队列实现之前,我们先简单了解一下概念:
一.数据越小,优先级越高
priority_queue<int, vector<int>, greater<int> >pq;priority_queue 对于基本类型的使用方法相对简单。他的模板声明带有三个参数:
priority_queue<Type, Container, Functional>
其中Type 为数据类型, Container 为保存数据的容器,Functional 为元素比较方式。
Container 必须是用数组实现的容器,比如 vector, deque 但不能用 list.
STL里面默认用的是 vector. 比较方式默认用 operator< , 所以如果你把后面俩个参数缺省的话,
优先队列就是大顶堆,队头元素最大。
二.优先队列- 声明方式
1.普通方法:
priority_queue<int>q; //通过操作,按照元素从大到小的顺序出队priority_queue<int,vextor<int>, greater<int> >q; //通过操作,按照元素从小到大的顺序出队
2.自定义优先级:
struct cmp {operator bool ()(int x, int y) {return x > y; // 数值小的优先级高,也可以写成其他方式,如: return p[x] > p[y];表示p[i]小的优先级高}//此处的大括号不能少,少了会报错};priority_queue<int, vector<int>, cmp>q; //定义方法,其中,第二个参数为容器类型,第三个参数为比较函数。
3.结构体声明方式:
struct node {int x, y;friend bool operator < (node a, node b) {return a.x > b.x; //结构体中,x小的优先级高}};priority_queue<node>q; //定义方法
struct node{ int a,b;}; bool operator < (const book &x,const book &y) { return x.a > y.b; }
然后给大家分享两个模板式的题:
结构体定义的优先队列,在这题中,我将两个结构体的优先队列都有介绍和运用:点击打开链接
一般的优先队列:点击打开链接
阅读全文
0 0
- 优先队列的详解
- 优先队列的详解与应用
- 优先队列的详解与使用
- 优先队列详解
- 优先队列详解
- 优先队列详解
- 优先队列详解
- 优先队列详解
- 优先队列详解(转载)
- 优先队列详解
- STL优先队列详解
- 优先队列详解
- 优先队列详解
- 优先队列详解
- 【转载】优先队列详解
- 优先队列详解
- 优先队列详解(转载)
- 优先队列详解
- JSONObject与其父类源码
- Kali linux渗透测试(二)
- Android 高级UI解密 (一) :实例详解Paint 与 高级渲染
- 算法系列简单研究(原)
- sql 语句的执行顺序
- 优先队列的详解
- spring源码导入eclipse
- 操作系统-内存管理-基本分段内存管理方式
- caddy的访问认证及频次限制
- redis介绍及使用方法简介
- 后缀数组模板
- Java学习第三天
- 安装git出现templates not found的问题
- 排序