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;
}

交换前:

在这里插入图片描述

交换后:

在这里插入图片描述

更多推荐