queue队列
queue是一种先进先出的数据结构。好比一根管道。
push(x)在队尾插入元素x
pop()弹出队首元素
front()返回队首元素,常与上一个组合使用
back()返回队尾元素
empty()检查队列是否为空
size()返回队列中元素的个数
priority_queue优先队列
优先队列是按一定的优先级进行排序的,默认按元素的值从大到小进行排序,即最大的元素位于队列的前面。为树形结构
根为top,叶子不用管C++帮我们搞好了。
push(x)插入O(logN)
pop()弹出优先队列的顶部元素O(logN)
top()返回优先队列中的顶部元素O(1)
empty()判空O(1)
size()返回队列元素个数O(1)
修改比较函数
仿函数:
struct Compare{
bool operator()(int a,int b){
return a>b;
}
}
int main(){
priority_queue<int,vector<int>, Compare> pq;
}
也可把Compare直接改为greater<int>(默认为less),将大根堆改为小根堆greater函数对象定义在<functional>头文件中。
如下:
priority_queue<int,vector<int>, greater<int> >;
注意此处一定要加空格">>"写在一起是右移运算符。
平时如果从大到小就不用后面的vector<int>
与greater<int> >;
deque双端队列
允许在两端进行高效插入与删除操作。
push_back(x)在尾部插入元素x
push_front(x)在头部插入元素x
pop_back()弹出尾部元素
pop_front()
front()返回头部元素
back()返回尾部元素
empty()判空
clear()清空