首页 > 其他分享 >优先队列(priority_queue)

优先队列(priority_queue)

时间:2022-08-31 22:58:57浏览次数:56  
标签:q1 queue q3 q2 队列 priority

介绍:

STL中的优先队列本质上就是基于堆实现的,所以可以实现堆的很多操作。

优先队列具有队列的所有特性,包括基本操作,只是在这基础上添加了内部的一个排序

头文件:#include<queue>

相关函数:

和队列基本操作相同:

  • top 访问队头元素
  • empty 队列是否为空
  • size 返回队列内元素个数
  • push 插入元素到队尾 (并排序)
  • pop 删除队头元素

声明队列:

(1)优先队列默认是从大到小(大根堆):

priority_queue<int> q3;//默认大根堆(降序)

(2)若想实现一个小根堆,升序排列,则可这样写:

priority_queue<int,vector<int>,greater<int> > q1;//升序队列,即小根堆 

(3)同样的,这种写法等价于(1):

priority_queue<int,vector<int>,less<int> > q2;//降序队列,即大根堆 

代码实例:

#include<queue>
#include<iostream>
using namespace std;
priority_queue<int,vector<int>,greater<int> > q1;//升序队列,即小根堆
priority_queue<int,vector<int>,less<int> > q2;//降序队列,即大根堆
priority_queue<int> q3;//默认大根堆(降序)

int x,y,z,n;

int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>x>>y>>z;
		q1.push(x);
		q2.push(y);
		q3.push(z);//push()插入元素;
	}
	while(!q1.empty()&&!q2.empty()&&!q3.empty()){//empty()判断是否为空
		int a,b,c;
		
		a=q1.top();//top()取堆顶(队首)
		q1.pop();//pop删除堆顶
		
		b=q2.top();
		q2.pop();
		
		c=q3.top();
		q3.pop();
		
		cout<<"size:"<<q1.size()<<endl;
		cout<<a<<"\n"<<b<<"\n"<<c<<"\n";
	}
	return 0;
}

输出如下:

 

标签:q1,queue,q3,q2,队列,priority
From: https://www.cnblogs.com/xiaotan-js/p/16644818.html

相关文章

  • 延迟消息队列beanstalkd
    beanstalkd是简单、快速的工作队列!Beanstalkd安装安装它的v1.12版本。[root@2207011resource]#wgethttps://github.com/beanstalkd/beanstalkd/archive/refs/tags/v......
  • RabbitMQ 入门系列:9、扩展内容:死信队列:真不适合当延时队列。
    系列目录RabbitMQ入门系列:1、MQ的应用场景的选择与RabbitMQ安装。RabbitMQ入门系列:2、基础含义:链接、通道、队列、交换机。RabbitMQ入门系列:3、基础含义:持久化、......
  • Docker-Compose 安装 RabbitMQ 并安装延迟队列插件 rabbitmq-delayed-message-exchang
    1、Docker-Compose 安装RabbitMQdocker-compose.ymlversion:'3'services:rabbitmq:restart:alwaysimage:rabbitmq:3.8.5-managementcontainer_......
  • 树的难题 BJOI2017 点分治 单调队列
    P3714[BJOI2017]树的难题没时间码先口胡。明显有一个n^2的暴力。可以拿到20分。链的情况也非常容易一个简单的单调队列就可以解决当然可以暴力的采用线段树。这样......
  • 队列
    什么是队列(Queue)?队列(queue)是一种采用先进先出(FIFO,firstinfirstout)策略的抽象数据结构。比如生活中排队,总是按照先来的先服务,后来的后服务。队列在数据结构中举足轻重,其......
  • 厚积薄发--一文带您了解阿里云 RocketMQ 轻量版消息队列(MNS)
    作者:周新宇&陈涛&李凯阿里云RocketMQ轻量版(MNS)消息队列是一个轻量、可靠、可扩展且完全托管的分布式消息队列服务。MNS能够帮助应用开发者在他们应用的分布式组件上更......
  • 如何解决消息队列的延时以及过期失效问题?
    如何解决消息队列的延时以及过期失效问题?消息队列满了以后该怎么处理?有几百万消息持续积压几小时,说说怎么解决?面试官心理分析你看这问法,其实本质针对的场景,都是说,......
  • 共享栈和双端队列
    一、算法设计思想1.ABCD顺序入栈,任意时刻出栈,共多少种排列(Catalan数:(1/n+1)·C2nn)       一定不存在这种情况:i<j<k,Str[i]>Str[k]>Str[j]。只需要在全排列的基......
  • C++中 sort()和priority_queue()中的自定义比较
    C++sort/priority_queue自定义比较sort/priority_queue的自定义比较是有区别的:sort是自定义函数;priority_queue则是自定义结构体,结构体里面重载()实现自定义比较......
  • 如何保证消息队列的高可用?
    如何保证消息队列的高可用?面试官心理分析如果有人问到你MQ的知识,高可用是必问的。上一讲提到,MQ会导致系统可用性降低。所以只要你用了MQ,接下来问的一些要点肯......