C++优先队列(priority queue)及重载运算符
来源:互联网 发布:java获取webapp父路径 编辑:程序博客网 时间:2024/06/03 17:26
定义:
普通的队列是一种先进先出的数据结构,元素在队列尾追加,而从队列头删除。在优先队列中,元素被赋予优先级。当访问元素时,具有最高优先级的元素最先删除。优先队列具有最高级先出 (first in, largest out)的行为特征。
头文件:
#include <queue>运算符重载:
friend bool operator<(node n1,node n2) return n1.elem>n2.elem;
这是根据node结构体中的elem升序构建的一个操作符, 如果想要降序就把>换成<
关于优先队列的定义:
priority_queue<node>q;//其中node为结构体名称,q为优先队列名称
先上几个介绍优先队列的博客:
1. 优先级队列几个应用详解
2. 优先队列详解
3. 优先队列priority_queue 用法详解
关于运算符的重载:
struct point{ int x; int y; int times; friend bool operator < (point a, point b) { return a.times > b.times; //重载小于号使得小的先出队列 } };
在此处定义一个优先队列priority_queue<point> q;
如果要按照以times进行从小到大排列,操作如上。
进行重载<操作符。
意思是如果a.times > b.times成立,那么结构体point a < point b成立。由于优先队列是按照从大到小排列,所以结构体b会排列到a之前,然而b.times是最小的,所以实现了按照times的从小到大排序,其实用一句话说就是要想b更大那么b.times.
***在结构体中比较时需要进行运算符的重载(重载<),在不需要结构体时:
priority_queue<int,vector<int>,less<int>>s;//定义优先级队列s,less表示按照递减(从大到小)的顺序插入元素priority_queue<int,vector<int>,greater<int>>s;//定义优先级队列s,greater表示按照递增(从小到大)的顺序插入元素
优先队列(priority_queue)的基本操作:
empty(); 队列为空返回1pop(); 出队push(); 入队top(); 返回队列中优先级最高的元素size(); 返回队列中元素的个数
0 0
- C++优先队列(priority queue)及重载运算符
- priority queue 优先队列
- priority queue 优先队列
- 优先队列priority queue
- C++ Priority Queue(优先队列)
- STL-优先队列(priority queue)
- 优先队列(Priority Queue)
- 优先队列(priority queue)
- 优先队列(Priority Queue)
- HDU1509 Windows Message Queue(优先队列priority_queue及重载运算符)
- 浅谈优先队列(priority queue)
- 优先队列——priority queue
- Priority Queue(Heaps)--优先队列(堆)
- 优先队列(Priority Queue)变种和加强
- Implement priority queue (实现优先队列)
- STL之优先队列priority queue
- 优先队列运算符重载
- C++STL系列 结构体运算符重载及优先队列的使用
- 一头大象--Hadoop生态圈
- Linux下编译OpenCV3总结
- 冒泡排序
- ajax 上传视频 h5及时播放
- 有序表的索引顺序结构查找次数分析
- C++优先队列(priority queue)及重载运算符
- Android开发之全局异常捕获完美闪退
- IDEA 旗舰版 使用Maven创建Web工程 并部署tomcat
- 验证码小练习强制将int类型转化为char类型遇到的小问题
- 设置BAT批处理窗口显示颜色
- 使用Redis Desktop Manager连接ubuntu虚拟机上的redis-sever
- javamail发送邮件
- 设计模式列表
- Django ManyToManyField 跨越中间表查询