目录
- queue 的概念
- queue 的构造方式
- queue 的常用接口
- empty()
- size()
- front()
- back()
- push()
- pop()
- swap()
queue 的技术文档:文档链接
queue 的概念
queue 也是一种 STL 容器,它实现自数据结构的队列
和数据结构的队列一样,queue 也是从一端入,在另一端出的,遵循先进先出的原则
要使用 queue,就需要包含头文件 queue,由于容器都是定义在 std 命名空间下的,所以还需要指定命名空间 std
#include<queue>queue 的构造方式
在构造 queue 时,要使用以下的语法:
queue<数据类型,内部所用的数据结构>对象名();其中,数据类型和对象名是必须要给定的,内部所用的数据结构与括号这两个信息不是必须的,如果不指定内部所用的数据结构,那么 queue 的内部用的结构就是 deque(一种顺序表和链表的结合),指定了内部所用的数据结构则使用指定的。
构造 queue 有两个方式:
(1)构造空的 queue
对象名后不加括号,就是在构造空的 queue
intmain(){queue<int>q1;return0;}(2)通过已有的容器对象来构造 queue
用这种方式构造 queue 时,需要将 queue 内部所用的数据结构更改为用来初始化 queue 的容器对象的结构
intmain(){vector<int>v1(2,1);//用来初始化队列的vectorqueue<int,vector<int>>q1;//构造队列所用的数据结构需要更改为vectorreturn0;}queue 的常用接口
queue 的常用接口主要有:
| 接口名称 | 功能 |
|---|---|
| empty | 判断队列是否为空 |
| size | 返回队列中的元素个数 |
| front | 取队头元素 |
| back | 取队尾元素 |
| push | 将一个元素入队 |
| pop | 将一个元素出队 |
| swap | 交换两个队列的值 |
empty()
empty 的作用为检查队列是否为空,是空返回 true,非空返回 false
intmain(){queue<int>q1;queue<int>q2;q2.push(1);q2.push(2);if(q1.empty())cout<<"q1 is empty"<<endl;elsecout<<"q1 is not empty"<<endl;if(q2.empty())cout<<"q2 is empty"<<endl;elsecout<<"q2 is not empty"<<endl;return0;}结果:
q1 is empty q2 isnotemptysize()
size 的作用为返回队列中元素的个数
intmain(){queue<int>q1;q1.push(1);q1.push(2);cout<<q1.size()<<endl;return0;}结果:
2front()
front 的作用为取出队头元素
intmain(){queue<int>q1;q1.push(1);q1.push(2);cout<<q1.front()<<endl;return0;}结果:
1back()
back 的作用为取出队尾元素
intmain(){queue<int>q1;q1.push(1);q1.push(2);cout<<q1.back()<<endl;return0;}结果:
2push()
push 的作用为将指定元素入队,入队后,size加1
intmain(){queue<int>q1;q1.push(1);q1.push(2);return0;}pop()
pop 的作用为将队头元素出队,出队后,size减1
intmain(){queue<int>q1;q1.push(1);q1.push(2);q1.pop();return0;}swap()
swap 的作用为将两个队列中的值进行互换
intmain(){queue<int>q1;q1.push(1);q1.push(2);queue<int>q2;q2.push(3);q2.push(4);q1.swap(q2);return0;}交换前:
交换后: