优先队列 priority_queue

存储整形

 1 priority_queue<数据类型>q   //定义
 2 如 priority_queue<int>q1   priority_queue<long long>q2
 3 // 队列在排序时复杂度为logn 
 4 q.push(x)  //将数 x 压入队列
 5 q.top()    //返回队首 
 6 q.pop()    //弹出队首 
 7 q.empty()  //判断队列是否为空,若为空,返回1,若不为空,返回0 
 8 q.size()   //返回元素数量 
 9 // 优先队列在未改动时以大根堆排列,也就是以单调递减的顺序
10 //若想以单调递增的顺序,建议压入负值
11 q.push(-x) 

存储结构体

 1 struct node
 2 {
 3 }
 4 priority_queue<node>q   //定义
 5 struct node
 6 {
 7     int id,num;
 8     friend bool operator < (node a,node b)
 9     {
10         return a.num>b.num;  //以num为关键字,递增 
11     }
12 };
13 struct node
14 {
15     int id,num;
16     friend bool operator < (node a,node b)
17     {
18         return a.num<b.num; //以num为关键字,递减 
19     }
20 };
21 //操作与整形相同

 

上一篇:学习笔记——线程方法


下一篇:MySQL索引优化