STL应用之大根堆小根堆

来源:互联网 发布:汉语言文学学什么知乎 编辑:程序博客网 时间:2024/06/06 01:30

定义:

priority_queue<int> xxx 大根堆

priority_queue<int, vector<int>, greater<int>> xxxx 小根堆

 

访问最值使用 xxx.top()

堆自动把最值维护在堆最上层

 

删除最值使用 xxx.pop()

删除后自动维护出一个新堆

 

插入元素使用 xxx.push(xxxx)

插入到元素该在的位置上 并自动维护堆有序


#include<queue>#include<iostream>#include<functional>#include<ctime>#include<cstdlib>using namespace std; priority_queue<int> pq1; //默认最大堆 priority_queue<int,vector<int>,greater<int> > pq2; //最小堆 /** addition equal_to       相等 not_equal_to   不相等 less           小于 greater        大于 less_equal     小于等于 greater_equal 大于等 这些在所有的排序算法中同样适用 */int main(){    srand(time(NULL));    for(int i=0;i<20;i++)    {      int r= rand()%10000;      pq1.push(r);      pq2.push(r);    }        for(int i=0;i<20;i++)    {         cout<<pq1.top()<<" "<<pq2.top()<<endl;         pq1.pop();         pq2.pop();    }    cin.get();    return 0;}