关于优先队列

优先队列是一种自动排序的数据结构,类似于单调队列,但会保留所有输入元素。它通常用于查找最高优先级的元素。优先队列实际上可以看作是内部实现的堆,支持堆顶元素的提取等操作。本文将介绍优先队列的类型和基本操作,并通过例题进行说明。

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

优先队列呢,跟单调队列很像,顾名思义就是一个会自动排序的具有队列特性的数据结构,使用这个数据结构是为了找到队列中优先级最高的元素。

ps:优先队列会收下每个输入的元素,而单调队列会舍弃一些不合法的元素以达到优化的目的。使用单调队列是为了让整个队列中的元素保持单调。区别不是特别大,主要根据题目选择。

如果按我自己的理解呢,优先队列就是个堆,只不过不需要我们去手写,同时也只具备堆的一部分特性。使用优先队列我们同样可以完成堆的提取堆顶元素,提取 k 个元素的操作。

优先队列种类:

大致可分为以下三种:

priority_queue<node> q;//结构体队列
priority_queue<int, vector<int>, less<int> > q;//单减队列-->大根堆
priority_queue<int, vector<int>, greater<int> > q;//单增队列-->小根堆
ps:默认的priority_queue<int>为单减队列
//默认结构体队列,注意重载小于
#include<stdio.h>
#include<queue>
using namespace std;
struct node {
	int x,y;
	bool operator < (const node & a) const {
		return x<a.x;
	}
} s;
priority_queue <node> q;
int main() {
	printf("读入:\n");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值