包含头文件<queue>
priority_queue<int, vector<int>, greater<int>> pqDataG; //创建一个优先队列
需要一个中间容器充当优先队列的容量
优先队列,是按照数据的优先权出队,VIP服务:
greater<int>()和less<int>()的使用_chijianxingfeng的博客-CSDN博客_less<int>()
出队和普通队列操作一样
默认方式从大到小出队:
C++中优先队列的priority_queue<int,vector<int>,greater<int>>与priority<int>的用法_Monkey Ji的博客-CSDN博客
哈夫曼树的构建:数据结构 --- C语言实现哈夫曼树_小雪菜本菜的博客-CSDN博客_c语言生成哈夫曼树
#include <iostream>
#include <queue>
#include <vector>
using namespace std;
template <class _Ty,class _Container = vector<_Ty>,class _Pr = less<_Ty>>
class my_priority_queue
{
public:
protected:
};
void testCreatePriorityQueue()
{
//默认的方式 下面三种创建方式都是等效的 大的先出队
priority_queue<int> pqData;
priority_queue<int,vector<int>> pqData2; //默认排序准则
priority_queue<int,vector<int>,less<int>> pqData3; //所有参数都完整
//优先队列,是按照数据的优先权出队,VIP服务
pqData.push(12);
pqData.push(0);
pqData.push(34);
while (!pqData.empty())
{
cout << pqData.top()<<" ";
pqData.pop(); //出队
}
cout << endl;
//从小到大
priority_queue<int, vector<int>, greater<int>> pqDataG;
pqDataG.push(12);
pqDataG.push(0);
pqDataG.push(34);
while (!pqDataG.empty())
{
cout << pqDataG.top() << " ";
pqDataG.pop(); //出队
}
cout << endl;
}
int main()
{
testCreatePriorityQueue();
return 0;
}
/* 输出 */
34 12 0
0 12 34