优先级队列priority_queue
最大值优先级队列、最小值优先级队列
优先级队列适配器 STL priority_queue
用来开发一些特殊的应用。
priority_queue<int, deque<int>> pq;
priority_queue<int, vector<int>> pq;
pq.empty()
pq.size()
pq.top()
pq.pop()
最大值优先级队列、最小值优先级队列
优先级队列适配器 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)
demo
#include <iostream>
#include <cstdio>
#include <queue>
#include <algorithm>
#include <functional>
using namespace std;
void printPriorityQ(priority_queue<int> &pq)
{
while (!pq.empty()) {
cout << pq.top() << ' ';
pq.pop();
}
cout << endl;
}
void priorityQueueInit()
{
priority_queue<int> pq1; // 默认情况下是最大值优先级队列
priority_queue<int, vector<int>, less<int> > pq2; // 提前定义好的预定义函数,谓词
priority_queue<int, vector<int>, greater<int> > pq3; // 最小值优先级队列
pq1.push(33);
pq1.push(11);
pq1.push(55);
pq1.push(22);
cout << "front of pq1: " << pq1.top() << endl;
// front of pq1: 55
cout << "size of qp1: " << pq1.size() << endl;
// size of qp1: 4
printPriorityQ(pq1);
// 55 33 22 11
cout << endl;
// 测试最小值优先级队列
pq3.push(33);
pq3.push(11);
pq3.push(55);
pq3.push(22);
cout << "front of pq3: " << pq3.top() << endl;
// front of pq3: 11
cout << "size of qp3: " << pq3.size() << endl;
// size of qp1: 4
//printPriorityQ(pq3); // 不能再用这个函数
while (!pq3.empty()) {
cout << pq3.top() << ' ';
pq3.pop();
}
cout << endl;
// 11 22 33 55
cout << endl;
}
int main()
{
priorityQueueInit();
return 0;
}