C++ 队列
C++ 队列
队列按照特定顺序存储多个元素,称为 **FIFO**。
**FIFO** 代表 **先进先出**。要可视化 FIFO,可以将队列想象成超市排队的人。第一个排队的人也是第一个可以付款并离开超市的人。这种组织元素的方式在计算机科学和编程中被称为 FIFO。
与 向量 不同,队列中的元素不能通过索引号访问。由于队列元素是在末尾添加,从开头移除的,因此只能访问开头或末尾的元素。
要使用队列,必须包含 <queue>
头文件
// 包含队列库
#include <queue>
创建队列
要创建队列,使用 queue
关键字,并指定它应该存储的值的 **类型**,放在尖括号 <>
内,然后是队列的名称,例如:queue<type> queueName
。
// 创建一个名为 cars 的字符串队列
queue<string> cars;
注意: 队列的类型(本例中为字符串)在声明后无法更改。
注意: 您无法在声明时向队列添加元素,就像您可以对 向量 做的那样
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(开头(第一个)元素)
BMW
Ford
Mazda(末尾(最后一个)元素)
访问队列元素
您无法通过引用索引号来访问队列元素,就像您对 数组 和 向量 所做的那样。
在队列中,您只能使用 .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(不为空)
自己尝试 »
栈和队列
队列通常与 栈 一起提及,栈是 上一页 中描述的类似数据结构。