priority_queue优先队列
发布日期:2021-05-07 03:05:41 浏览次数:29 分类:精选文章

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

5.priority_queue(优先队列)

5.1 介绍

优先队列是在正常队列的基础上加了优先级,保证每次的队首元素都是优先级最大的。

它的底层是通过堆来实现的。

//头文件#include
//初始化定义priority_queue
pq;

5.2 函数方法

代码 含义
top() 访问队首元素
push() 入队
pop() 堆顶(队首)元素出队
size() 队列元素个数
empty() 是否为空
没有clear()! 不提供该方法

优先队列只能通过top()访问队首元素(优先级最高的元素)

5.3 设置优先级

5.3.a 基本数据类型的优先级

priority_queue
, less
>pq;//最后两个>之间要有空格

解释:

第二个参数:
vector< int > 是用来承载底层数据结构堆的容器,若优先队列中存放的是double型数据,就要填vector< double >
总之存的是什么类型的数据,就相应的填写对应类型。

第三个参数:

less< int > 表示数字大的优先级大,降序队列
greater< int >表示数字小的优先级大,升序队列

5.3.b 结构体优先级设置

优先级设置可以定义在结构体内进行小于号重载,也可以定义在结构体外,下面演示定义在外面的简单写法,详情大家可以搜索相关博客进行了解。

struct node{   	int x;	int y;}a,b;//注意:cmp是个结构体 struct cmp{   //自定义堆的排序规则 	bool operator()(const &node a,const &node b)	{   		return a.x>b.x;//从堆底到堆顶 降序排序 	}//如果要升序改变不等号方向就好};//初始化定义, priority_queue
,cmp >pq;

注意: 优先对列自定义排序规则和sort()函数定义cmp函数很相似,但是最后返回的情况是相反的。即相同的符号,最后定义的排列顺序是完全相反的。

上一篇:deque(双端队列)介绍
下一篇:STL超全总结(一文解决stl,快速入门)

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2025年03月25日 01时45分40秒