c++ 的一种特殊堆,c++特有,学来用一用,补充补充知识。
顺便了解了解c++
#include<queue>
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
struct node{
int x;
};
priority_queue <node> q;
//定义一个类型为node的优先队列(使用堆的队列)
bool operator <(node a,node b){
return a.x>b.x;
}
//因为优先队列默认为从大到小( 用"<"比较),我们若要从小到大,就要重新定义"<"为相反操作
int main(){
int n;
cin>>n;
if (q.empty()) cout<<"The heap is empty!"<<endl;//判断队列是否为空
for (int i=1;i<=n;++i){
node t;
cin>>t.x;
q.push(t);//将t加入队列
}
for (int i=1;i<=n;++i){
node t;
t=q.top();//取出队首
q.pop();//将队首弹出
cout<<t.x<<' ';
}
cout<<endl;
}