优先队列的基础知识
来源:互联网 发布:游戏程序员招聘 编辑:程序博客网 时间:2024/06/06 01:47
优先队列概念
优先队列是队列的一种,不过它可以按照自定义的一种方式(数据的优先级)来对队列中的数据进行动态的排序每次的push和pop操作,队列都会动态的调整,以达到我们预期的方式来存储。例如:我们常用的操作就是对数据排序,优先队列默认的是数据大的优先级高所以我们无论按照什么顺序push一堆数,最终在队列里总是top出最大的元素。
优先队列的基本操作
优先级队列支持的操作q.empty() 如果队列为空,则返回true,否则返回false
q.size() 返回队列中元素的个数
q.pop() 删除队首元素,但不返回其值
q.top() 返回具有最高优先级的元素值,但不删除该元素
q.push(item) 在基于优先级的适当位置插入新元素
优先队列的优先值设置
优先队列也是用 #include<queue>
这个头文件,且不必引入vector的头文件
1. 基础类型优先级设置
默认定义:
priority_queue<int>
大顶堆
手工设置:
priority_queue<int, vector<int>, less<int>>
大顶堆:表示其他都比堆顶小priority_queue<int, vector<int>, greater<int>>
小顶堆:表示其他都比堆顶大
后面补充的两个参数:内部用容器+规则。
既然默认是大顶堆,所以手动设置时只用管小顶堆即可,greater!.
2. 结构体设置优先级:
只可在结构体内部重载小于号
两种重置用法:
- 运算符重载 + 友元
struct node{ int one; int two; friend bool operator < (node x,node y) { return x.one<y.two;//这是大顶堆,反之则是小顶堆 } }; priority_queue<node> Q;//调用
- 比较运算符外置
struct node{ int one; int two;};struct cmp{ bool operator()(node x,node y) { return x.one<y.two;//大顶堆 }};priority_queue < node,vector<node> , cmp > Q;
阅读全文
1 0
- 优先队列的基础知识
- 优先队列基础知识(一)
- 优先队列基础知识(四)---二项队列
- 优先队列基础知识(三)---左式堆
- 【科普·给学弟看的算法】队列的基础知识和基本运用(1):基本队列与优先队列
- 队列的应用:优先队列
- 队列、优先队列的学习
- 优先队列的用法
- 优先队列的用法
- 优先队列的用法
- 优先队列的使用
- 优先队列的使用
- 优先队列的使用
- 优先队列的使用
- 优先队列的使用
- 优先队列的使用
- 优先队列的使用
- 优先队列的实现
- 集合中元素的比较
- gcc -l参数和-L参数
- 添加phpiredis扩展的时候报错
- APK Signature
- 深入浅出讲解:php的socket通信
- 优先队列的基础知识
- C++中的static关键字详解
- Mdular Linear Equatin 模线性方程(同余方程)
- PHP导出word,CVS,PDF
- Python没有运行快捷按钮
- Android DecorView浅析
- android 系统数据业务---打开
- mysql的两种安装方式
- Android APK 上架