【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;
}