c++之STL(8)优先级队列 priority_queue

本文是听的网络课程,而记录下来的学习心得。


自适应容器(容器适配器):不能使用list

特点:数据中最大的放的是队首

从队首拿出来的数据始终是最大的


两种优先级队列:

最大值优先级队列、最小值优先级队列

优先级队列适配器 STL priority_queue

priority_queue<int, deque<int>> pq;

priority_queue<int, vector<int>> pq;

pq.empty()

pq.size()

pq.top()

pq.pop()

pq.push(item)

 

#include<iostream>
#include<queue>


//
using namespace std;

int main()
{
	//最大值优先级队列
	priority_queue<int, vector<int>> pq;
	// 默认的是使用的 vector 上句等价于 priority_queue<int> pq;
	priority_queue<int, deque<int>> pq2;
	pq.push(10);
	pq.push(5);
	pq.push(-1);
	pq.push(20);

	cout << "优先级队列一共有:" << pq.size() << endl;

	cout << pq.top() << endl;// 输出最大值
	while (!pq.empty())
	{
		cout << "从优先级队列里删除:" << pq.top() << endl;
		pq.pop();
	}

	//
	system("pause");
	return 0;
}

#include<iostream>
#include<queue>
#include<functional>

//
using namespace std;


int main()
{
	//最大值优先级队列
	priority_queue<int, vector<int>> pq;
	// 默认的是使用的 vector 上句等价于 priority_queue<int> pq;
	// greater 谓词 要加入头文件 #include<functional>
	priority_queue<int, deque<int>, greater<int>> pq2;	// 最小值优先级队列 
	pq.push(10);
	pq.push(5);
	pq.push(-1);
	pq.push(20);

	cout << "优先级队列一共有:" << pq.size() << endl;

	cout << pq.top() << endl;// 输出最大值
	while (!pq.empty())
	{
		cout << "从优先级队列里删除:" << pq.top() << endl;
		pq.pop();
	}
	 
	cout << "下面是最小值优先级队列" << endl;
	pq2.push(10);
	pq2.push(5);
	pq2.push(-1);
	pq2.push(20);
	cout << pq2.top() << endl;
	while (!pq2.empty())
	{
		cout << pq2.top() << endl;
		pq2.pop();
	}

	//
	system("pause");
	return 0;
}






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值