1.优先队列priority_queue

优先先队列是队列的一种,不过它可以按照自定义的一种方式(数据的优先级)来对队列中的数据进行动态的排序。每次的push和pop操作,队列都会动态的调整,以达到我们预期的方式来存储。常用的操作就是对数据排序,优先队列默认的是数据大的优先级高(即大根堆),即无论按照什么顺序push一堆数,top()总是能够弹出最大元素。

常用有以下四种情况:普通大根堆和小根堆,自定义类型的大根堆和小根堆:

#include <iostream>
#include <queue>using namespace std;struct Node{int x;Node( int a= 0):x(a) {}friend bool operator<(Node a,Node b ){return a.x<b.x;//  使用">"则为小根堆}
};int main(){int data2[5]={1,3,7,-4,56};priority_queue<int> big(data2,data2+5);//大根堆priority_queue<int,vector<int>,greater<int>> little(data2,data2+5);//小根堆。Node data1[10];for( int i= 0; i< 10; ++i )data1[i]=Node(rand());priority_queue<Node> q(data1,data1+10);//自定义大根模式while(!big.empty()){cout<<big.top()<<' ';big.pop();}cout<<endl;while(!little.empty()){cout<<little.top()<<' ';little.pop();}cout<<endl;while( !q.empty() ){cout << q.top().x << ' ' ;q.pop();} return 0;
}

对于三个参数的情况 "priority_queue<int,vector<int>,greater<int>>",第二个参数是存储容器,第三个是STL自带的仿函数

转载于:https://www.cnblogs.com/engineerLF/p/5393007.html

C++之priority_queue相关推荐

  1. C++ Stack Queue priority_queue

    栈stack:stack 后入先出(LIFO) q.top() 获取栈顶元素(并不删除) q.pop() 删除栈顶元素 q.push(x) 向栈中加入元素 q.empty() 判断栈是否为空 队列qu ...

  2. c++ std::priority_queue优先队列

    template <class T, class Container = vector<T>,class Compare = less<typename Container:: ...

  3. C++/C++11中std::priority_queue的使用

    std::priority_queue:在优先队列中,优先级高的元素先出队列,并非按照先进先出的要求,类似一个堆(heap).其模板声明带有三个参数,priority_queue<Type, C ...

  4. C++STL 优先队列priority_queue使用

    头文件:#include <queue> 一.申明方式 std::priority_queue<T> q; std::priority_queue<T, std::vec ...

  5. priority_queue 结构体的优先级设置

    目标:使用结构体Node类型的优先队列,让其按照我们希望的顺序进行排序. 预备知识:会结构体的定义,和结构体类型的优先队列的定义,知道优先队列默认是最大堆排序(即top()得到的是最大的元素) 要做的 ...

  6. STL queue priority_queue

    queue 队列 queue 队列 就像排队一样,后来的排在后面,先来的先出队.所以只能对队首和队尾的元素进行操作 back() 返回最后一个元素 empty() 如果队列空则返回真 front() ...

  7. 【HDU/算法】最短路问题 杭电OJ 2544 (Dijkstra,Dijkstra+priority_queue,Floyd,Bellman_ford,SPFA)

    最短路径问题是图论中很重要的问题. 解决最短路径几个经典的算法 1.Dijkstra算法 单源最短路径(贪心),还有用 priority_queue 进行优化的 Dijkstra 算法. 2.bell ...

  8. C++ STL中的优先队列(priority_queue)使用

    原文:https://www.cnblogs.com/cielosun/p/5654595.html 今天讲一讲优先队列(priority_queue),实际上,它的本质就是一个heap,我从STL中 ...

  9. C++_STL——queue(and priority_queue)

    C++_STL--queue(and priority_queue) queue: template <class T, class Container = deque<T> > ...

  10. [C/C++标准库]_[初级]_[优先队列priority_queue的使用]

    2019独角兽企业重金招聘Python工程师标准>>> std::priority_queue 场景: 1. 对于一个任务队列,任务的优先级由任务的priority属性指明,这时候就 ...

最新文章

  1. 黑苹果uhd630黑屏_求助各位图吧大佬一个黑苹果问题(黑苹果吧发帖得四级),目前使...
  2. [OS] 远程启动计划任务时以管理员身份运行
  3. java中json对象去重复_如何忽略Java中JSON对象的多个属性?
  4. win11如何登陆本地用户 windows11登陆本地用户的步骤方法
  5. 解读灰度直方图的信息
  6. 爬虫 | 破解APP中阿里云滑动验证码
  7. 转载:常见的15种音频格式
  8. 史上最全软件测试Web测试要点,吐血整理。
  9. visio流程图添加连接点
  10. 详解navigator对象
  11. 微软官方外挂,让你的win10更加好用
  12. VL53L0X+stm32激光测距
  13. LoRa节点如何以OTAA方式入网TTN服务器?
  14. 实现TextView尾部追加可点击的Icon和文本
  15. rootkit概念摘抄
  16. XSS能有什么危害?
  17. GPS定位(五)-高斯投影正反算C程序
  18. c++ 45行代码实现 生命游戏-细胞自动机!!!
  19. vue-cli3.x创建项目失败
  20. matlab2019b 读取excel数据并转换成.mat文件

热门文章

  1. Atitit.js javascript异常处理机制与java异常的转换 多重catc hDWR 环境 .js exception process Vob7
  2. paip.日期时间操作以及时间戳uapi php java python 总结
  3. paip.提高稳定性---自动检测sleep mysql数据库死连接以及kill
  4. Paip. DDBS 分布式 数据库系统 attilax总结C0G
  5. paip.解决Invalid byte 2 of 2-byte UTF-8 sequence.
  6. 我与OTC的诸位大神
  7. 【优化调度】基于matlab改进的遗传算法求解风电场优化调度问题【含Matlab源码 1245期】
  8. 【路径规划】基于matlab GUI蚁群算法求解电动汽车充电站与换电站协调路径规划【含Matlab源码 796期】
  9. 【车牌识别】基于matlab GUI汽车出入库收费系统(带面板)【含Matlab源码 735期】
  10. 【卡号识别】基于matlab分割法银行卡数字识别【含Matlab源码 312期】