STL 容器:queue
·
queue 的技术文档:文档链接
queue 的概念
queue 也是一种 STL 容器,它实现自数据结构的队列
和数据结构的队列一样,queue 也是从一端入,在另一端出的,遵循先进先出的原则
要使用 queue,就需要包含头文件 queue,由于容器都是定义在 std 命名空间下的,所以还需要指定命名空间 std
#include <queue>
queue 的构造方式

在构造 queue 时,要使用以下的语法:
queue<数据类型, 内部所用的数据结构> 对象名();
其中,数据类型和对象名是必须要给定的,内部所用的数据结构与括号这两个信息不是必须的,如果不指定内部所用的数据结构,那么 queue 的内部用的结构就是 deque(一种顺序表和链表的结合),指定了内部所用的数据结构则使用指定的。
构造 queue 有两个方式:
(1)构造空的 queue
对象名后不加括号,就是在构造空的 queue
int main()
{
queue<int> q1;
return 0;
}
(2)通过已有的容器对象来构造 queue
用这种方式构造 queue 时,需要将 queue 内部所用的数据结构更改为用来初始化 queue 的容器对象的结构
int main()
{
vector<int> v1(2, 1); //用来初始化队列的vector
queue<int, vector<int>> q1; //构造队列所用的数据结构需要更改为vector
return 0;
}
queue 的常用接口
queue 的常用接口主要有:
| 接口名称 | 功能 |
|---|---|
| empty | 判断队列是否为空 |
| size | 返回队列中的元素个数 |
| front | 取队头元素 |
| back | 取队尾元素 |
| push | 将一个元素入队 |
| pop | 将一个元素出队 |
| swap | 交换两个队列的值 |
empty()
empty 的作用为检查队列是否为空,是空返回 true,非空返回 false
int main()
{
queue<int> q1;
queue<int> q2;
q2.push(1);
q2.push(2);
if (q1.empty())
cout << "q1 is empty" << endl;
else
cout << "q1 is not empty" << endl;
if (q2.empty())
cout << "q2 is empty" << endl;
else
cout << "q2 is not empty" << endl;
return 0;
}
结果:
q1 is empty
q2 is not empty
size()
size 的作用为返回队列中元素的个数
int main()
{
queue<int> q1;
q1.push(1);
q1.push(2);
cout << q1.size() << endl;
return 0;
}
结果:
2
front()
front 的作用为取出队头元素
int main()
{
queue<int> q1;
q1.push(1);
q1.push(2);
cout << q1.front() << endl;
return 0;
}
结果:
1
back()
back 的作用为取出队尾元素
int main()
{
queue<int> q1;
q1.push(1);
q1.push(2);
cout << q1.back() << endl;
return 0;
}
结果:
2
push()
push 的作用为将指定元素入队,入队后,size加1
int main()
{
queue<int> q1;
q1.push(1);
q1.push(2);
return 0;
}
pop()
pop 的作用为将队头元素出队,出队后,size减1
int main()
{
queue<int> q1;
q1.push(1);
q1.push(2);
q1.pop();
return 0;
}
swap()
swap 的作用为将两个队列中的值进行互换
int main()
{
queue<int> q1;
q1.push(1);
q1.push(2);
queue<int> q2;
q2.push(3);
q2.push(4);
q1.swap(q2);
return 0;
}
交换前:

交换后:

更多推荐





所有评论(0)