priority_queue

优先队列是队列的一种,不过它可以按照自定义的一种方式(数据的优先级)来对队列中的数据进行动态的排序//这就是优化的办法

每次的push和pop操作,队列都会动态的调整,以达到我们预期的方式来存储。

priority_queue 对于基本类型的使用方法相对简单。他的模板声明带有三个参数:

priority_queue<Type, Container,Functional>

其中Type 为数据类型,Container 为保存数据的容器,Functional 为元素比较方式。不写后两个系统会默认vector<>容器(只能是数组形式) ,大顶堆 ,队首元素最大
greater() 和less()函数经常使用在sort()中用来对容器进行升序或者降序排序,或者用在push_heap()和pop_heap()中用来构建最小堆(greater)或者最大堆(less). greater<p> 按p从大到小
sort(a,a+n,greater<int>()); 
priority_queue<int ,vector<int >,greater<int> > q;    
写优先队列的函数:
struct cmp{
    bool operator ()(int a,int b){
        return a<b;
    }
};