这个……
优先队列,也就是priority_queue
基本操作差不多就是队列与栈的结合
- 出队列:
que.pop()
- 访问队列顶部:
que.top()
- 查看队列是否为空:
que.empty()
- 查看队列的长度:
que.size()
- 入队列:
que.push(x)
注意事项:
- 优先队列的出队列是按照优先级来的
- 其中大根堆最先出的是最大值,小根堆最先出的是最小值
- 优先队列的插入和删除时间复杂度都是较优的
O(logn)
- 查看队列是否为空时
true
为真,false
为假
实现操作
优先队列默认的时大根堆,想要实现小根堆就得手动更改
大根堆定义:
priority_queue<int> que;
小根堆定义:
priority_queue<int, vector<int>, greater<int> > que;
这里在定义小根堆的时候要注意一下最后面的两个>
在早期版本的C++
里如果不加系统就会默认为位运算
>>
而报错
不过后期的C++
进化了,因此可以不加
但是为了以防万一,还是加上吧