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()来检验容器是否为空。

运用实例

// 使用VS2008 和 code::blocks 10.05调试通过
#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)相关推荐

  1. 6-5-3:STL之stack和queue——优先级队列-priority_queue(堆)的基本使用和模拟实现以及仿函数

    文章目录 一:优先级队列-priority_queue(堆) (1)基本使用 (2)模拟实现 二:仿函数 (1)仿函数是什么 (2)使用仿函数完成大顶堆和小顶堆的构建 一:优先级队列-priority ...

  2. STL学习系列七:优先级队列priority_queue容器

    1.简介 最大值优先级队列.最小值优先级队列 优先级队列适配器 STL priority_queue 用来开发一些特殊的应用,请对stl的类库,多做扩展性学习 这里给个例子: #include< ...

  3. C++ STL 学习笔记__(6)优先级队列priority_queue基本操作

    10.2.7优先级队列priority_queue v  最大值优先级队列.最小值优先级队列 v  优先级队列适配器 STL priority_queue v  用来开发一些特殊的应用,请对stl的类 ...

  4. 优先级队列priority_queue

    优先级队列priority_queue 优先级队列是一个拥有权值的queue,其内部元素按照元素的权值排列.权值较高者排在最前优先出队.其中缺省情况下系统是通过一个max-heap以堆实现完成排序特性 ...

  5. (P85)stl(十三):容器适配器,stack,queue,优先级队列priority_queue,make_heap

    文章目录 1.容器适配器 2.stack 3.queue 4.优先级队列priority_queue 5.make_heap 6.set 1.容器适配器 利用基本容器构造的容器,称之为容器适配器 基本 ...

  6. 【C++】优先级队列priority_queue仿函数

    这里先简单介绍一下优先级队列priority_queue:优先队列是一种容器适配器,默认的情况下,如果没有为特定的priority_queue类实例化指容器类,则使用vector (deque 也是可 ...

  7. C++ 优先级队列 priority_queue

    优先级队列(priority_queue)是一种容器适配器(container adaptor).它要求容器具有front.push_back.pop_back等操作,并且容器具有随机访问的能力,故优 ...

  8. STL之优先级队列priority_queue

    摘要: priority_queue,自适应容器(即容器适配器):不能由list来组建: 最大值优先级队列(最大值始终在对首,push进去时候) 最小值优先级队列: 优先级队列适配器 STL  pri ...

  9. ural 1306. Sequence Median(优先级队列 priority_queue用法)

    最近做的ural的题目总是各种错,看了解题报告都是自己没学过的玩意,有点受打击,不过ural的题目质量还是挺好的,多被虐虐有益健康. 这一题要是用数组直接超内存,用优先级队列做,刚接触这个,学习一下优 ...

  10. 详解优先级队列priority_queue(应用+模拟实现)

    优先级队列的概念 优先队列是一种容器适配器,根据严格的弱排序标准,它的第一个元素总是它所包含的元素中最大的 此上下文类似于堆,在堆中可以随时插入元素,并且只能检索最大堆元素(优先队列中位于顶部的元 素 ...

最新文章

  1. 半导体终极武器光刻机:为何中国难望ASML项背?!有了全套图纸也做不出来
  2. arduino 操纵杆_用Arduino做一台FPV(第一人称视角)遥控履带车
  3. 导出数据在SQL Server中作为INSERT INTO
  4. flutter 透明度动画_Flutter中的动画填充+不透明度动画✨
  5. EA问题的JDK14实例
  6. Spring Tool Suite 4 添加反编译插件
  7. 不仅仅于 Json和XML ,快来学习Google出品的序列化神器Protocol Buffer
  8. 程序员怒了!你敢削减专利奖金,我敢拒绝提交代码!
  9. opencv ubuntu 汉字_ubuntu下没有中文输入法的解决办法
  10. win32以动态链接库导出类及其成员变量
  11. Android Sutiod报错:Dx unsupported class file version 52.0(解决)
  12. python数据分析用什么库_Python数据分析常用的库总结
  13. 两分钟看懂CPU生产过程
  14. 【产品人卫朋】华为IPD流程体系:集成产品开发框架
  15. cefsharp修改html,CefSharp v62修改方法(支持.net4.0)
  16. 手把手教你一键U盘装系统
  17. Java实现简单的售货机程序2
  18. 文科生学计算机能考研吗,求推荐文科生可以跨考计算机的名校
  19. react 实现导出PDF功能
  20. NLP领域大语言模型汇总

热门文章

  1. JavaScript中的(内置)方式来检查字符串是否为有效数字
  2. 如何将类添加到给定的元素?
  3. JavaScript中的“ new”关键字是什么?
  4. 7-2 天梯地图 (30分)_「月夜枫YYF」不会吧不会吧,枫哥失守8000分阵地!
  5. 传统存储方式_相机传到手机的3种方式,没WiFi的相机也能用
  6. python中yield讲解_「技术」如何深入理解Python中的 yield?
  7. 数据结构与算法:十大排序算法之归并排序
  8. 如何使用Java进行简单爬虫
  9. java获取网络图片_做个看图片的App玩玩_第一篇
  10. wordpress 资料管理系统_说一说库存管理系统。