详情参见官网http://www.cplusplus.com/reference/queue/priority_queue/
-
priority_queue:优先队列。类似堆,其中可以随时插入元素,并且只能检索最大堆元素(优先级队列中顶部的元素)。特性:每次输出的都是顶端元素,顶端元素默认是最大元素。
-
引用包
#include <queue>
-
定义
priority_queue<int> Q;
-
基本方法
方法名 说明 Q.empty() 检测是否为空 Q.size() 返回实际数据个数 Q.top() 返回顶端元素 Q.push(x) 插入一个元素x Q.pop() 弹出顶端元素 -
优先输出最大堆元素
priority_queue<Type, Container, Functional>
Type:存储的数据元素类型
Container:底层存储数据的容器类型
Functional:元素比较方法
如果后面两个参数不写,默认容器为vector,元素比较方法为<,即大根堆#include <iostream> #include <queue> using namespace std; int main () { priority_queue<int> Q; Q.push(30); Q.push(100); Q.push(25); Q.push(40); cout << "Popping out elements..."; while (!Q.empty()) { cout << ' ' << Q.top(); Q.pop(); } cout << '\n'; return 0; }
-
优先输出最小堆元素
注意此处:与上面唯一不同的就是 声明时,换了元素比较方法priority_queue<int,vector<int>,greater<int> > Q;
#include <iostream> #include <queue> using namespace std; priority_queue<int,vector<int>,greater<int> > Q; void Init() { while(!Q.empty())Q.pop(); } int main() { Init(); Q.push(200); Q.push(100); Q.push(50); Q.push(600); Q.push(34); cout<<"poping..."; while(Q.size()>0) { int v = Q.top();//拿到顶端小数据 cout<<" "<<v; Q.pop();//弹出顶端元素 } return 0; }