C++:STL------queue
1.about
头文件queue主要包括循环队列queue和优先队列priority_queue两个容器。
2.声明
#include <queue> //头文件
queue<int> q1; //存储int的队列
struct rec{...};
queue<rec> q2;
priority_queue<int> q3;
priority_queue<pair<int,int>> q4;
priority_queue<int,vector,less> q5; //最大堆(默认为最大堆)
priority_queue<int,vector,greater> q6; //最小堆
注:pair<>: C++内置的二元组,尖括号分别指定二元组的第一元、第二元的类型。可以用make_pair函数创建二元组,用成员变量first访问第一元、second访问第二元。在比较大小时,以第一元为第一关键字、第二元为第二关键字。
3.循环队列queue
方法 | 描述 | 实例 | 时间复杂度 |
---|---|---|---|
push | 入队(从队尾) | q.push(element); | O(1) |
pop | 出队(从队头) | q.pop(); | O(1) |
front | 队头元素 | int x = q.front(); | O(1) |
back | 队尾元素 | int y = q.back(); | O(1) |
size | 实际长度(包含的元素个数) | int z = q.size(); | O(1) |
empty | 是否为空 | bool a=q.empty(); | O(1) |
4.优先队列priority_queue
方法 | 描述 | 实例 | 时间复杂度 |
---|---|---|---|
size | 实际长度(包含的元素个数) | int x = q.size(); | O(1) |
empty | 是否为空 | bool y = q.empty(); | O(1) |
push | 把元素插入堆 | q.push(x); | O(logn) |
pop | 删除堆顶元素 | q.pop(); | O(logn) |
top | 查询栈顶元素(最大值) | int z = q.top(); | O(1) |