priority_queue详解

简述

  优先队列是stl里容器的一种,优先队列的底层结构是堆,会根据定义的优先级将优先级高的排在队首,入队和出队的时间复杂度在log(n)。

定义

  优先队列默认大的在队首,字符串则为字典序由大到小。int,double,char,string类型都可以这样定义。

priority_queue<int> qe;//默认大的在前面
priority_queue<string,vector<string>,greater<string> >qe;//小的在前面 

  若队内元素是自己定义的结构体,则需要重载运算符改变优先级。

struct node{
    int x,y;
    node(int a,int b){x=a;y=b;}
};
bool operator<(node a,node b){
    return a.x>b.x;//注意这里的符号是反过来的,现在是从小到大 
}
priority_queue<node> qe; 

成员函数

容量

•qe.empty();  队列判空

•qe.size();     队列元素个数

返回信息

•qe.top();     队头元素(在优先队列没有front和back函数)

操作

•qe.push(x);   将x入队

•qe.pop();    队首元素出队

原文地址:https://www.cnblogs.com/qq2210446939/p/12540428.html