📅  最后修改于: 2023-12-03 15:06:41.694000             🧑  作者: Mango
优先级队列是一种数据结构,它可以存储一系列元素,每个元素都有一个与之相关的优先级,并且可以按照优先级从高到低或从低到高的顺序访问或取出队列中的元素。在最小优先(Min-Priority)队列中,具有最小优先级的元素在队列前面,而具有较高优先级的元素在队列后面。
C++ STL库中的优先级队列(priority_queue)默认是最大优先队列,因此在使用时需要自定义比较函数,以实现最小优先队列。
以下是一个基于C++的最小优先级队列的代码实现。
#include <iostream>
#include <queue>
using namespace std;
struct compare
{
bool operator()(const int& a, const int& b)
{
return a > b;
}
};
priority_queue<int, vector<int>, compare> pq;
pq.push(10);
pq.push(20);
pq.push(15);
cout << pq.top() << endl;
pq.pop();
优先级队列在算法和数据结构中很常见,最小优先级队列是其中重要的一种类型。在C++ STL库中,我们需要自定义比较函数来实现最小优先队列。