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

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


关键字为priority_queue ( 大根堆 ) 和 priority_queue <int,vector<int>,greater<int>> ( 小根堆 ).

在一些定义了权重的地方这个数据结构是很有用的。

先回顾队列的定义:队列(queue)维护了一组对象,进入队列的对象被放置在尾部,下一个被取出的元素则取自队列的首部。

priority_queue特别之处在于,允许用户为队列中存储的元素设置优先级。

这种队列不是直接将新元素放置在队列尾部,而是放在比它优先级低的元素前面。

标准库默认使用 < 操作符来确定对象之间的优先级关系,所以如果要使用结构体,需要重载 < 和 > 操作符

优先队列有两种,一种是最大优先队列;一种是最小优先队列;每次取自队列的第一个元素分别是优先级最大和优先级最小的元素。

1) 优先队列的定义

包含头文件:

<queue>

关于优先队列的数据类型,可以使用自定义结构体,使用方法如上文所述.

 

2) 优先队列的常用操作

优先级队列支持的操作

q.empty()         如果队列为空,则返回true,否则返回false

q.size()            返回队列中元素的个数

q.pop()             删除队首元素,但不返回其值

q.top()             返回具有最高优先级的元素值,但不删除该元素

q.push(item)     在基于优先级的适当位置插入新元素

其中q.top()为查找操作,在最小优先队列中搜索优先权最小的元素,在最大优先队列中搜索优先权最大的元素.

优先队列插入和删除元素的复杂度都是 O(lgn).

另外,在优先队列中,元素可以具有相同的优先权.

 

 

 

 

 

部分转载自 

 

转载于:https://www.cnblogs.com/Kv-Stalin/p/9093163.html

你可能感兴趣的文章
软件工程课程设计团队项目总结与项目报告
查看>>
Min_25 筛 学习笔记
查看>>
微信小程序购物商城系统开发系列-目录结构
查看>>
人际交往能力:远比你想象的重要
查看>>
node起步
查看>>
SharedPreferences详解
查看>>
Agc011_C Squared Graph
查看>>
虚拟机性能监控与故障处理工具
查看>>
Codeforces Round #226 (Div. 2)C. Bear and Prime Numbers
查看>>
29.Divide Two Integers
查看>>
PHP基础示例:商品信息管理系统v1.1
查看>>
IsolatedStorageFile生成的文件在vista下面存在哪里?
查看>>
eclipse导入项目文件以及 import项目文件后有个红色感叹号
查看>>
Files
查看>>
vue同一个页面可以有多个router-view
查看>>
Theano安装笔记
查看>>
从首页问答标题到问答详情页
查看>>
XP文件夹加密过,恢复系统后拒绝访问---(解决方法)
查看>>
[译]9-spring bean的生命周期
查看>>
EXTJs前后台交互 常用哦3种方式
查看>>