(我的STL相关的博客目录:https://blog.csdn.net/Kprogram/article/details/90408011)
(queue-c++官网:http://www.cplusplus.com/reference/queue/)
queue 是数据结构 “队列”s,拥有元素先进先出的特性。如果用数组来作为队列,长度是有限的,而且需要储存队列首尾的指针,不同于栈,队列还要考率元素出队列之后,留下的空挡该怎么处理。stl提供了一个不定长容器queue来作为队列,queue表留有有队列操作的各种成员函数,方便实用。
0 - 头文件:queue 命名空间:std
#include <queue>
using namespace std;
1 - 构建一个queue:queue<typename> name
typename指的是队列内数据类型,可以是 int, double, 可以是struct, class, 也可以是 queue, string等等。总之是一个数据对象都行。
name 是你构建的队列的名字,符合变量命名法则就行。
例:构建一个 int 类型的队列, 名字叫做 Q。
queue<int> Q;
2 - 使用queue:常用成员函数 ( 假设你创建的queue对象名字叫 Q )
(粉红色的函数为常用函数!大部分情况下这些函数就够用了)
无参函数:
empty():如果queue为空,返回True, 反之则返回 False。
fornt():返回队列第一个元素。
back():返回队列最后一个元素。
pop():删除队列第一个元素,并不返回元素(一般与front()配合使用:先返front(),再pop(),相当于出队列操作)。
size():返回queue内数据的个数(相当于数组长度)。
#一般用法:(假如是一个int类型的队列)
while(!Q.empty()) {//当队列不为空
int I = Q.front(); Q.pop();//元素出队列
...//对I的某些操作
有参函数:
push(type):把一个数据(type)压入栈顶(相当于入栈)。
因为对于队列,push等同于push_back,所以queue 没有push_back成员函数!(已经试过了会报错)
swap(Q1):交换Q 和 Q1 中的内容(Q1是另一个swap对象)。
//假设队列内的数据类型是data
class data {
int a;
int b;
public:
data(int x, int y):a(x), b(y) {}
};
//push:
data d(1,2);
Q.push(d);
//或者
Q.push(data(1,2));
push的优化:emplace函数(点击蓝色字体>emplace<)