STL ------ priority_queue(预习和复习)

本文详细介绍了C++ STL中的priority_queue数据结构,包括其与堆的关系、基本操作如top、pop、push、empty和size,以及如何定义大根堆和小根堆。文章还强调了在操作堆前检查是否为空的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

priority_queue与一个的实现是相同的,只不过它把 Put_Heap, Get_Heap 都简化了。它的定义如下:

priority_queue <int> s;//定义一个名为 s 的大根堆

假如说想要定义一个小根堆的话,可以这样:

priority_queue <int, vector <int> , greater <int> > q //定义一个名字为 q 的小根堆
priority_queue <int, vector <int> , less <int> > q //定义一个名字为 q 的大根堆

priority_queue 也与queue的操作基本相同,具体如下:

  1. top
int x = q.top(); //获取堆顶元素(root)的值,不对堆做出改变
  1. pop()
q.pop(); //删除堆顶元素(root)并维护当前的堆(寻找下一个符合条件的值把它拉到堆顶)
  1. push()
q.push(x); //把元素 x  插入堆中,并且维护这个堆(把 x 插入堆底,并向上查找,原理与堆相同)
  1. empty()
q.empty(); //查询堆是否为空,如果是的话即返回 0 , 不是则反之
  1. size()
int len = q.size(); // 查询堆内元素的个数

注意!在进行 1 和 3 的操作的时候如果不能保证队列 (堆)中有元素,要先用操作 4 或5 来检查队列(堆)是否为空,否则会 RE !
优先队列的内部实现其实就是一个堆 ,他也就是用来减少我们的代码量的(好东西)
例题与我在这篇题解中是一样的,此处就不再赘述,拜拜!

注 : 其他STL请点开我的博客阅读哦QWQ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值