C++ 队列
C++ 队列
队列按照特定的顺序存储多个元素,称为先进先出。
FIFO 代表先进先出。为了更好地理解 FIFO,可以把队列想象成人们在超市排队。第一个排队的人也是第一个付款离开超市的人。这种组织元素的方式在计算机科学和编程中被称为 FIFO。
与向量不同,队列中的元素不能通过索引号访问。由于队列元素是从末尾添加,从开头移除,因此只能访问队列开头或末尾的元素。
要使用队列,您必须包含 <queue> 头文件:
// Include the queue library
#include <queue>
创建队列
要创建队列,请使用 queue 关键字,并在尖括号 <> 中指定它应该存储的值的 类型,然后是队列的名称,例如:queue<类型> 队列名称。
// 创建一个名为"cars"的字符串队列。
queue<string> cars;
注意:队列的类型(在本例中为字符串)在声明后无法更改。
注意:您无法像使用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 (front (first) element)
BMW
Ford
Mazda (back (last) element)
访问队列元素
在队列中,您只能访问队首或队尾的元素,分别使用.front()和.back()。
示例
// 访问最前端元素(第一个和最旧的元素)
cout << cars.front(); // Outputs "Volvo"
// 访问上一级元素(最后和最新)s
cout << cars.back(); // Outputs "Mazda"
亲自试一试 »
更改前面板和后面板元素
您还可以使用 .front 和 .back 来更改前面板和后面板元素的值:
示例
// 更改前面元素的值
cars.front() = "Tesla";
// 更改后部元素的值
cars.back() = "VW";
// 访问前端元素
cout << cars.front(); // Now outputs "Tesla" instead of "Volvo"
// Access the back element
cout << cars.back(); // Now outputs "VW" instead
of "Mazda"
亲自试一试 »
移除元素
您可以使用 .pop() 函数从队列中移除元素。
这将移除队列最前面的元素(添加到队列中的第一个也是最早的元素):
示例
// 创建一个字符串队列
queue<string> cars;
// 将元素添加到队列
cars.push("Volvo");
cars.push("BMW");
cars.push("Ford");
cars.push("Mazda");
// Remove the front element (Volvo)
cars.pop();
// Access the front element (Now BMW)
cout << cars.front();
亲自试一试 »
获取队列的大小
要查找队列中元素的数量,请使用 .size() 函数:
检查队列是否为空
使用 .empty() 函数来判断队列是否为空。
.empty() 函数返回 1(真)表示队列为空,否则返回 0(假):
示例
queue<string> cars;
cars.push("Volvo");
cars.push("BMW");
cars.push("Ford");
cars.push("Mazda");
cout
<< cars.empty(); // Outputs 0 (not empty)
亲自试一试 »
栈和队列
队列经常与栈一起提及,栈是一种类似的数据结构,在上一页中有所描述。

