每天6道题之基础知识1:STL优先级队列

本文介绍了优先级队列和双端队列的基础知识及其在编程中的应用。优先级队列,通常用堆实现,确保最大元素优先出队,常用于解决贪心问题;而双端队列deque允许在两端快速插入和删除元素,适合需要灵活操作头尾元素的场景。了解这两种数据结构有助于提升算法能力。
摘要由CSDN通过智能技术生成

前言

在这里插入图片描述
本来是想把第十七题那个任务调度器的题给写了,但是我看题解看不懂,所以就去学基础知识了,然后就学了优先级队列。

在题解里看到说用堆来解决,用优先级队列来解决,这给我干懵了,我个菜鸡零基础,给我说这个,属实不太懂,然后就补了一些知识,如下:

1 什么是优先级队列

优先级队列与队列一样,只能从队尾插入元素,从队首删除元素,但是它有一个特性,就是队列中最大的元素总是位于队首,一般说用堆的思想其实就是指的优先级队列。优先级队列详细解释
(1)头文件:#include
(2)声明方法:priority_queue q;
(3)基本函数:在这里插入图片描述
在默认的优先队列中,优先级高的先出队。在默认的int型中先出队的为较大的数。
对于基础类型,一般是数字大的优先级高,对于字符,就是字典序越大,优先级越高。
priority_queue的用途以及注意点

1、解决贪心问题
2、注意在使用top()之前要判空使用empty()

详细解释

2 deque和queue的区别

deque是双端队列,也就是说在队列的头部尾部都可以进行快速的插入或者删除
常用函数:(deque deq)
(1)deq.size() 返回队列内元素的个数
(2)deq.at(int n) 该函数自动检查n是否在队列中的有效元素范围内,如果不在,即n>deq.size(),则抛出异常,
(3)deq.front() 返回队头元素
(4)deq.back() 返回队尾元素
(5)deq.push_back() 在头尾插入元素
(6)deq.push_front ( ) 在队头插入元素
(7)deq.pop_back() 删除队尾元素
(8)deq.pop_front() 删除队头元素

其他一些常用函数

而queue则是严格意义上的队列,智能从队尾插入元素,从队头删除元素。

常用函数
push:在队尾插入一个元素
pop:删除队头元素
size:返回队列中元素的个数
front:返回队列中的第一个元素(并没有剔除队列,只是返回)
back:返回队列中最后一个元素。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值