#4445. queue、deque、priority_queue相关函数

queue、deque、priority_queue相关函数

当前没有测试数据。

1、queue队列:队列是先进先出的(First in first out), 队头的访问和删除操作只能在队头进行,添加操作只能在队尾进行

常见函数:

函数名 函数说明
push(元素) 进队,从队尾入队
pop() 出队,从队头出队
front() 返回队头元素
back() 返回队尾元素
size() 返回队列中元素个数
empty() 判断队列是否为空

2、deque双端队列:可以从队首添加和删除元素,同时也可以从队尾插入和添加元素,所有适用于vector的操作都适用于deque,只不过deque在头尾增删元素性能较好

deque有两种vector没有的成员函数:

push_front(num)//头部插入元素 pop_front()//删除头部元素

deque 使用注意:

deque 支持随机存取 deque 支持在头部和尾部存储数据 deque 不支持capacity和reserve 操作

3、priority_queue优先队列:优先队列具有队列的所有特性,并且队头元素总是最大的,相当于在内部添加了一个排序

定义源代码

template<
    class T,
    class Container = std::vector<T>,
    class Compare = std::less<typename Container::value_type>
> class priority_queue;

T:存储的数据类型

Container:底层容器(一般用 vector

Compare:比较函数,决定堆的性质

Compare = std::less<T>:表示 a < b 时,a 的优先级更小

所以 priority_queue 会把 最大的元素放在堆顶(大根堆 / 最大堆)

priority_queue<int, vector<int>, less<int> > max_pq; 	//生成大根堆

greater<int>:表示 a > b 时,a 的优先级更小

所以 priority_queue 就会把 最小的元素放在堆顶(小根堆 / 最小堆)

priority_queue<int, vector<int>, greater<int> > min_pq;

Tisp:zap:当不写比较函数是,默认是大根堆,所以less<T> 可以省略

priority_queue<int> max_pq;