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(); 队首元素出队
一点一点积累,一点一点蜕变!