【C++容器】priority_queue 优先队列

priority_queue 优先队列 

大根堆(降序)

构造一个空的优先队列(此队列默认为大根堆)

priority_queue<int> big_heap;   

另一种构造大根堆的方法:

priority_queue<int, vector<int>, less<int>> big_heap;

小根堆

构造一个空的优先队列,此优先队列是一个小顶堆

priority_queue<int, vector<int>, greater<int>> small_heap;

图解:

 

成员函数:

函数 描述
push() 它将新元素插入优先队列。
push() 它将优先级最高的元素从队列中删除。
push() 此函数用于寻址优先队列的最顶层元素。
size() 返回优先队列的大小。
size() 它验证队列是否为空。基于验证,它返回队列的状态。
size() 它将优先队列的元素与具有相同类型和大小的另一个队列交换。
size() 它在优先队列的顶部插入一个新元素。

 

#include <iostream>
#include <queue>
#include <vector>
using namespace std;

int main()
{
	vector<pair<int, int>> nums = {{1, 2}, {3, 3}, {2, 4}, {5, 1}};
	for (auto &[key, val] : nums)
		cout << "(" << key << "," << val << ")" << endl;
	priority_queue<pair<int, int>> qu;
	for (int i = 0; i < nums.size(); ++i)
		qu.push(nums[i]);

	while (!qu.empty())
	{
		cout << "(" << qu.top().first << ", " << qu.top().second << ")" << endl;
		qu.pop();
	}
	return 0;
}

参考资料

1. c++ 优先队列(priority_queue)

posted @ 2022-05-16 23:00  苏格拉底的落泪  阅读(98)  评论(0编辑  收藏  举报