priority_queque 优先队列,即有序队列。每加入一个元素会自动排序(默认从小到大)。
使用例子:每次取出最大的两个求和,将和加到数组中。
#include <iostream>
#include <queue>
using namespace std;
int sum;
int N=10;
int main()
{
int a[]={12,23,11,32,12,3,7,34,55,9};
priority_queue<int> q; //优先队列
int i;
for(i=0;i<N;i++)
{
q.push(a[i]);
}
int max1,max2;
while(q.size()>1)
{
max1=q.top(); //取队尾元素的值
q.pop(); //去掉队尾
max2=q.top(); //取队尾元素
q.pop();
sum = sum+max1+max2;
q.push(max1+max2);
}
cout<<sum<<endl;
return 0;
}
大到小排列的