博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
STL中的优先级队列priority_queue
阅读量:5149 次
发布时间:2019-06-13

本文共 1108 字,大约阅读时间需要 3 分钟。

priority_queue(queue类似)完全以底部容器为根据,再加上二叉堆(大根堆或者小根堆)的实现原理,所以其实现非常简单,缺省情况下priority_queue以vector作为底部容器。另外priority_queue缺省比较规则是less:

class Compare = less

less对应的是按照大根堆来实现优先级队列,当然也可以将比较规则设置为greater,这时候是按照小根堆来实现的优先级队列。

 

priority_queue(queue一样)以底部容器完成其所有工作,具有这种“修改某物接口,形成另一种风貌”性质者,称为适配器(adapter)。因此,priority_queue往往不被归类于容器(container),而是归类于容器适配器(container adapter)。priority_queue是一种顺序容器适配器,STL中顺序容器还包括queue,stack。这三种顺序容器适配器都使用底层的顺序容器完成自己应该完成的工作。

 

以上内容总结自《STL源码剖析》。

priority_queue示例:

#include 
#include
#include
using namespace std;int main(){ int ia[9] = {
0,1,2,3,4,8,9,3,5}; priority_queue< int, vector
, greater
> ipq(ia, ia + 9);//Compare为greater
说明实现原理是小根堆,可以改为less
观察输出 cout << "size = " << ipq.size() << endl; for(int i = 0; i < ipq.size(); ++i){ cout << ipq.top() << " "; } cout << endl; while(!ipq.empty()){ cout << ipq.top() << " "; ipq.pop(); } cout << endl; return 0;}

 

转载于:https://www.cnblogs.com/iamswf/p/4466012.html

你可能感兴趣的文章
nginx的rewrite,gzip,反向代理学习笔记
查看>>
[UI]抽屉菜单DrawerLayout分析(一)
查看>>
java语言登陆界面(菜鸟版)
查看>>
html5新增加的标签
查看>>
关于jquery attr()与prop() 的区别
查看>>
C#调用C++DLL/天地伟业解码器二次开发
查看>>
zend framework 1 连接oracle数据库的写法
查看>>
APUE学习笔记:第九章 进程关系
查看>>
关于 阿里云 的linux 安装 jdk和tomcat 中的问题(解压版的jdk和tomcat)
查看>>
Logstash_Apache日志采集
查看>>
使用localStorage保存搜索记录
查看>>
PHP队列
查看>>
PhpStudy 升级 MySQL 版本到5.7
查看>>
程序代码记Log
查看>>
ffmpeg 指定网络连接模式TCP
查看>>
那些年踩过的坑
查看>>
获取Excel
查看>>
布局神器 display:flex;
查看>>
ORACLE 11G使用用EXPDP导出时,空表不能导出
查看>>
2017-2018-1 20155216 实验三:并发程序
查看>>