priority_queue(优先级队列)用法

优先队列  头文件#include <queue>

优先级队列是一种容器适配器,根据某种严格的弱排序标准,它的第一个元素总是它所包含的元素中最大的一个。

此上下文类似于堆,其中元素可以随时插入,并且只能检索max heap元素(优先级队列中位于顶部的元素)。

优先级队列被实现为容器适配器,容器适配器是使用特定容器类的封装对象作为其底层容器的类,提供一组特定的成员函数来访问其元素。元素从特定容器的“背面”弹出,该容器被称为优先级队列的顶部。

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

和队列基本操作相同:

top 访问队头元素
empty 队列是否为空
size 返回队列内元素个数
push 插入元素到队尾 (并排序)
emplace 原地构造一个元素并插入队列
pop 弹出队头元素
swap 交换内容

************************************分割线************************************

其实我最想说的是对于优先队列中插入一对元素,此时是按这一对元素中的first来排序的。

使用push的话就得加上他的类型,具体看代码:

插入一对元素,可以直接使用emplace,但是使用push就得用代码里那种形式

#include<iostream>
#include<queue>
using namespace std;
int main() {
	priority_queue<int>s;
	s.push(1);
	s.emplace(2);

	priority_queue<pair<int, int>>q;
	q.emplace(1,1);
	q.push(pair<int, int>(2, 1));
	q.push(pair<int, int>(3, 1));
	q.push(pair<int, int>(4, 1));
	q.push(pair<int, int>(5, 1));
	while(!q.empty()) {
		
		cout << q.size()<< "  "<<q.top().first << " "<< q.top().second<<endl;
		q.pop();
	}
	return 0;
}

运行结果:

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值