C++ 优先级队列(priority_queue)
C++ 优先级队列(priority_queue)
优先级队列顾名思义是根据元素的优先级被读取,接口和queues非常相近。程序员可以通过template参数指定一个排序准则。缺省的排序准则是利用operator< 形成降序排列,那么所谓“下一个元素”就是“数值最大的元素”。如果同时存在若干个数值最大的元素,无法确知究竟哪一个会入选。
头文件:<queue>
在文件 <queue> 中,class priority_queue 定义如下:
namespace std {
template < class T ,
class Container = vector<T> ,
class Compare = less <typename Container::value_type> >
class priority_queue ;
}
由于priority queue需要用到STL heap算法,所以其内部容器必须支持随机存取迭代器。例如你可以使用deque来容纳元素:
std::priority_queue< float, std::deque<float> > pbuffer ;
核心接口
push() 将一个元素置于priority queue中
top() 返回priority queue中的“下一个元素”
pop() 从priority queue 中移除一个元素
注意:如果priority queue 内没有元素,执行top()和pop()会导致未定义的行为,应该先采用size()或empty()来检验容器是否为空。
运用实例
#include <iostream>
#include <queue>
using namespace std ;
int main()
{
priority_queue<float> q;
// insert three elements into the priority queue
q.push (66.6);
q.push (22.2);
q.push (44.4);
// read and print two elements
cout << q.top () << ' ';
q.pop ();
cout << q.top () << endl;
q.pop ();
// insert three more elements
q.push (11.1);
q.push (55.5);
q.push (33.3);
// skip one element
q.pop ();
// pop and print remaining elements
while (!q.empty ()) {
cout << q.top () << ' ';
q.pop ();
}
cout << endl ;
}
参考资料 《C++标准程序库》侯捷 孟岩译
转载于:https://www.cnblogs.com/chinazhangjie/archive/2010/10/31/1865653.html
C++ 优先级队列(priority_queue)相关推荐
- 6-5-3:STL之stack和queue——优先级队列-priority_queue(堆)的基本使用和模拟实现以及仿函数
文章目录 一:优先级队列-priority_queue(堆) (1)基本使用 (2)模拟实现 二:仿函数 (1)仿函数是什么 (2)使用仿函数完成大顶堆和小顶堆的构建 一:优先级队列-priority ...
- STL学习系列七:优先级队列priority_queue容器
1.简介 最大值优先级队列.最小值优先级队列 优先级队列适配器 STL priority_queue 用来开发一些特殊的应用,请对stl的类库,多做扩展性学习 这里给个例子: #include< ...
- C++ STL 学习笔记__(6)优先级队列priority_queue基本操作
10.2.7优先级队列priority_queue v 最大值优先级队列.最小值优先级队列 v 优先级队列适配器 STL priority_queue v 用来开发一些特殊的应用,请对stl的类 ...
- 优先级队列priority_queue
优先级队列priority_queue 优先级队列是一个拥有权值的queue,其内部元素按照元素的权值排列.权值较高者排在最前优先出队.其中缺省情况下系统是通过一个max-heap以堆实现完成排序特性 ...
- (P85)stl(十三):容器适配器,stack,queue,优先级队列priority_queue,make_heap
文章目录 1.容器适配器 2.stack 3.queue 4.优先级队列priority_queue 5.make_heap 6.set 1.容器适配器 利用基本容器构造的容器,称之为容器适配器 基本 ...
- 【C++】优先级队列priority_queue仿函数
这里先简单介绍一下优先级队列priority_queue:优先队列是一种容器适配器,默认的情况下,如果没有为特定的priority_queue类实例化指容器类,则使用vector (deque 也是可 ...
- C++ 优先级队列 priority_queue
优先级队列(priority_queue)是一种容器适配器(container adaptor).它要求容器具有front.push_back.pop_back等操作,并且容器具有随机访问的能力,故优 ...
- STL之优先级队列priority_queue
摘要: priority_queue,自适应容器(即容器适配器):不能由list来组建: 最大值优先级队列(最大值始终在对首,push进去时候) 最小值优先级队列: 优先级队列适配器 STL pri ...
- ural 1306. Sequence Median(优先级队列 priority_queue用法)
最近做的ural的题目总是各种错,看了解题报告都是自己没学过的玩意,有点受打击,不过ural的题目质量还是挺好的,多被虐虐有益健康. 这一题要是用数组直接超内存,用优先级队列做,刚接触这个,学习一下优 ...
- 详解优先级队列priority_queue(应用+模拟实现)
优先级队列的概念 优先队列是一种容器适配器,根据严格的弱排序标准,它的第一个元素总是它所包含的元素中最大的 此上下文类似于堆,在堆中可以随时插入元素,并且只能检索最大堆元素(优先队列中位于顶部的元 素 ...
最新文章
- 半导体终极武器光刻机:为何中国难望ASML项背?!有了全套图纸也做不出来
- arduino 操纵杆_用Arduino做一台FPV(第一人称视角)遥控履带车
- 导出数据在SQL Server中作为INSERT INTO
- flutter 透明度动画_Flutter中的动画填充+不透明度动画✨
- EA问题的JDK14实例
- Spring Tool Suite 4 添加反编译插件
- 不仅仅于 Json和XML ,快来学习Google出品的序列化神器Protocol Buffer
- 程序员怒了!你敢削减专利奖金,我敢拒绝提交代码!
- opencv ubuntu 汉字_ubuntu下没有中文输入法的解决办法
- win32以动态链接库导出类及其成员变量
- Android Sutiod报错:Dx unsupported class file version 52.0(解决)
- python数据分析用什么库_Python数据分析常用的库总结
- 两分钟看懂CPU生产过程
- 【产品人卫朋】华为IPD流程体系:集成产品开发框架
- cefsharp修改html,CefSharp v62修改方法(支持.net4.0)
- 手把手教你一键U盘装系统
- Java实现简单的售货机程序2
- 文科生学计算机能考研吗,求推荐文科生可以跨考计算机的名校
- react 实现导出PDF功能
- NLP领域大语言模型汇总
热门文章
- JavaScript中的(内置)方式来检查字符串是否为有效数字
- 如何将类添加到给定的元素?
- JavaScript中的“ new”关键字是什么?
- 7-2 天梯地图 (30分)_「月夜枫YYF」不会吧不会吧,枫哥失守8000分阵地!
- 传统存储方式_相机传到手机的3种方式,没WiFi的相机也能用
- python中yield讲解_「技术」如何深入理解Python中的 yield?
- 数据结构与算法:十大排序算法之归并排序
- 如何使用Java进行简单爬虫
- java获取网络图片_做个看图片的App玩玩_第一篇
- wordpress 资料管理系统_说一说库存管理系统。