c++STL之priority_queue,优先队列

优先队列是一种极其特殊的队列,他与标准的队列使用线性结构进行计算不同,优先队列的底层是以散列的状态(非线性)表现的,他与标准的队列有如下的区别,标准的队列遵从严格的先进先出,优先队列并不遵从标准的先进先出,而是对每一个数据赋予一个权值,根据当前队列权值的状态进行排序,永远使得权值最大(或最小)的排在队列的最前面。

头文件:#include

初始化:

priority_queue        //直接输入元素则使用默认容器和比较函数,默认是大的在队头

priority_queue

其中container是数组类型的容器,不能是list,能是vector,compare是自定义比较函数,但是这个比较函数是用结构体的运算符重载完成

struct  cmp

{ //这个比较要用结构体表示

    booloperator()(int&a, int&b) const

    {

        returna > b;//把最小的放到队头

    }

};

常用接口:

size();//队列中元素个数

push(1);//入队

pop();//出队

top();//访问队头元素

empty();//判空

代码:

#include

#include

using namespace std;

struct cmp{//从小到大输出

    bool operator()(int &a,int &b)const{

        return a>b;

    }

};

int main(){

    priority_queue,cmp> q;

    //priority_queue q;//默认是从大到小输出

    int m;

    for(int i=0;i<5;i++){

        cin>>m;

        q.push(m);

    }

    cout<

    int i=1;

    while(!q.empty()){

        cout<

        q.pop();

    }

    return 0;

}

结果:

你可能感兴趣的:(c++STL之priority_queue,优先队列)