C++ 队列
C++ 队列
队列存储多个元素,遵循特定的顺序,称为FIFO。
FIFO 代表先进先出。要理解 FIFO,可以想象超市里排队的人。第一个排队的人也是第一个可以付款离开超市的人。这种组织元素的方式在计算机科学和编程中称为 FIFO。
与 vector 不同,队列中的元素不能通过索引号访问。由于队列元素在末尾添加,在开头移除,您只能访问开头或末尾的元素。
要使用队列,您必须包含 <queue> 头文件
// 包含 queue 库
#include <queue>
创建队列
要创建队列,请使用 queue 关键字,并在尖括号 <> 中指定它应存储的值的类型,然后是队列的名称,例如:queue<type> queueName。
// 创建一个名为 cars 的字符串队列
queue<string> cars;
注意:队列的类型(在我们示例中为 string)在声明后无法更改。
注意:您不能在声明时添加元素,就像您可以对 vector 所做的那样
queue<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
添加元素
要将元素添加到队列,您可以在声明队列后使用 .push() 函数。
.push() 函数将元素添加到队列的末尾
示例
// 创建一个字符串队列
queue<string> cars;
// 向队列添加元素
cars.push("Volvo");
cars.push("BMW");
cars.push("Ford");
cars.push("Mazda");
队列将如下所示
Volvo (队首(第一个)元素)
宝马
福特
Mazda (队尾(最后一个)元素)
访问队列元素
您无法像使用 数组和 vector 那样通过索引号访问队列元素。
在队列中,您只能使用 .front() 和 .back() 分别访问队首或队尾的元素。
示例
// 访问队首元素(第一个也是最旧的)
cout << cars.front(); // 输出 "Volvo"
// 访问队尾元素(最后一个也是最新的)
cout << cars.back(); // 输出 "Mazda"
自己动手试一试 »
更改队首和队尾元素
您还可以使用 .front 和 .back 来更改队首和队尾元素的值。
示例
// 更改队首元素的值
cars.front() = "Tesla";
// 更改队尾元素的值
cars.back() = "VW";
// 访问队首元素
cout << cars.front(); // 现在输出“Tesla”,而不是“Volvo”
// 访问队尾元素
cout << cars.back(); // 现在输出“VW”,而不是“Mazda”
自己动手试一试 »
移除元素
您可以使用 .pop() 函数从队列中移除一个元素。
这将移除队首元素(添加到队列的第一个也是最旧的元素)。
示例
// 创建一个字符串队列
queue<string> cars;
// 向队列添加元素
cars.push("Volvo");
cars.push("BMW");
cars.push("Ford");
cars.push("Mazda");
// 移除队首元素 (Volvo)
cars.pop();
// 访问队首元素(现在是 BMW)
cout << cars.front();
自己动手试一试 »
获取队列的大小
要查找队列中有多少个元素,请使用 .size() 函数。
检查队列是否为空
使用 .empty() 函数来查找队列是否为空。
.empty() 函数在队列为空时返回 1(true),否则返回 0(false)。
示例
queue<string> cars;
cars.push("Volvo");
cars.push("BMW");
cars.push("Ford");
cars.push("Mazda");
cout << cars.empty(); // 输出 0 (非空)
自己动手试一试 »
栈和队列
队列经常与 栈一起提及,栈是上一页中描述的类似数据结构。