c++ 优先队列(priority_queue)

本文介绍了C++中的优先队列,它基于堆实现,提供快速查找最大值或最小值的能力。优先队列是STL中的派生容器,支持O(log n)的查找效率,并能在出队时按照优先级顺序处理。文章详细讲解了大顶堆和小顶堆的概念,以及如何通过priority_queue模板类创建和操作优先队列,包括成员函数如empty(), size(), pop(), top()和push()的使用。" 113709586,10546395,梯度下降法详解:从概念到算法优化,"['机器学习', '优化算法', '梯度算法', '深度学习']
摘要由CSDN通过智能技术生成

优先队列的本质是堆,但它具有队列的所有操作特性,与普通队列不同的地方就是出队的时候按照优先级顺序出队,这个优先级即最大堆或最小堆的规则(即大的为top优先出队或小的为top优先出队),在队列的基础上加了个堆排序。

以O(log n) 的效率查找一个队列中的最大值或者最小值,其中是最大值还是最小值是根据创建的优先队列的性质来决定的。

priority_queue

对于这个模板类priority_queue,它是STL所提供的一个非常有效的容器。

作为队列的一个延伸,优先队列包含在头文件 <queue> 中

C ++中的优先队列是STL中的派生容器,它仅考虑最高优先级元素。队列遵循FIFO策略,而优先队列根据优先级弹出元素,即,优先级最高的元素首先弹出。

它在某些方面类似于普通队列,但在以下方面有所不同

  • 在优先队列中,队列中的每个元素都与某个优先级相关联,但是优先级在队列数据结构中不存在。

  • 优先队列中具有最高优先级的元素将被首先删除,而队列遵循FIFO(先进先出)策略,这意味着插入的元素将被首先删除。

  • 如果存在多个具有相同优先级的元素,则将考虑该元素在队列中的顺序。

注意:优先队列是普通队列的扩展版本,但优先级最高的元素将首先从优先队列中删除。

优先队列的语法

priority_queue<Type, Container, Functional>    

 其中Type 为数据类型, Container 为保存数据的容器,Functional 为元素比较方式。

 1.在STL中,默认情况下(不加后面两个参数)是以vector为容器,以 operator< 为比较方式,所以在只使用第一个参数时

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值