priority_queue优先队列

优先队列

优先队列与普通队列不同之处在于我们可以自定义元素的优先级高低,来决定谁先出队列。

基本操作与queue大致相同,底层是一个堆来实现的

top() 返回队首元素
empty() 判空
size() 返回队列元素个数
push() 队尾插入元素(并排序)
pop() 弹出队首元素
swap() 交换两个队列元素
emplace() 构造一个元素并插入队列

优先队列的构造:

priority_queue<value_type, container, function> Name

container为容器类型(container必须是用数组实现的容器,比如vector,deque等等,但不能用 list。STL里面默认用的是vector),functional 就是比较函数。

默认为大顶堆。

示例代码:

1 //升序队列,小顶堆
2 priority_queue <int,vector<int>,greater<int> > q;
3 //降序队列,大顶堆
4 priority_queue <int,vector<int>,less<int> >q;
5 
6 /*greater和less是std实现的两个仿函数(就是使一个类的使用看上去像一个函数。其实现就是类中实现一个operator(),这个类就有了类似函数的行为,就是一个仿函数类了)
7 */

 

posted @ 2020-08-14 11:14  不敢说的梦  阅读(131)  评论(0)    收藏  举报