C++教程

浏览4314
更新时间2025-08-05

C++ 队列

队列按照特定的顺序(称为先进先出,FIFO)存储多个元素。

FIFO 是 "First In, First Out"(先进先出)的缩写。为了形象地理解 FIFO,可以将队列想象成超市里排队结账的人们。排在队伍最前面的人也是第一个能够付款并离开超市的人。在计算机科学和编程中,这种元素组织方式被称为 FIFO。

与向量不同,队列中的元素不能通过索引号来访问。由于队列元素是从末尾添加、从前端移除的,因此你只能访问队列的前端或后端元素。

要使用队列,必须包含 <queue> 头文件:

// 包含队列库
#include <queue>

创建队列

要创建队列,可以使用 queue 关键字,并在尖括号 <> 内指定它应存储的值的类型,然后是队列的名称:

queue<type> queueName

实例

// 创建一个名为 cars 的字符串队列
queue<string> cars;

注意:队列的类型(在我们的示例中是 string)一旦声明后就不能更改。

注意:不能像使用向量那样在声明队列时直接添加元素:

实例

queue<string> cars = {"Volvo", "BMW", "Ford", "Tesla"};

添加元素

要向队列中添加元素,可以使用 .push() 函数。

.push() 函数会在队列的末尾添加一个元素:

实例

// 创建一个字符串队列
queue<string> cars;

// 向队列中添加元素
cars.push("Volvo");
cars.push("BMW");
cars.push("Ford");
cars.push("Tesla");

此时队列的内容如下:

Volvo(前端(第一个)元素)
BMW
Ford
Tesla(后端(最后一个)元素)

访问队列元素

不能像访问数组和向量那样通过索引号来访问队列元素。

在队列中,只能使用 .front().back() 分别访问前端或后端的元素:

实例

// 访问前端元素(第一个且是最早的元素)
cout << cars.front();  // 输出 "Volvo"

// 访问后端元素(最后一个且是最新的元素)
cout << cars.back();  // 输出 "Tesla"
运行实例 »

点击 "运行实例" 按钮查看在线实例

修改前端和后端元素

也可以使用 .front().back() 来修改前端和后端元素的值:

实例

// 修改前端元素的值
cars.front() = "Audi";

// 修改后端元素的值
cars.back() = "VW";

// 访问前端元素
cout << cars.front();  // 现在输出 "Audi" 而不是 "Volvo"

// 访问后端元素
cout << cars.back();  // 现在输出 "VW" 而不是 "Tesla"
运行实例 »

点击 "运行实例" 按钮查看在线实例

移除元素

可以使用 .pop() 函数从队列中移除元素。

这会移除前端元素(即队列中第一个且是最早添加的元素):

实例

// 创建一个字符串队列
queue<string> cars;

// 向队列中添加元素
cars.push("Volvo");
cars.push("BMW");
cars.push("Ford");
cars.push("Tesla");

// 移除前端元素(Volvo)
cars.pop();

// 访问前端元素(现在是 BMW)
cout << cars.front();
运行实例 »

点击 "运行实例" 按钮查看在线实例

获取队列的大小

要了解队列中有多少个元素,可以使用 .size() 函数:

实例

cout << cars.size();
运行实例 »

点击 "运行实例" 按钮查看在线实例

检查队列是否为空

可以使用 .empty() 函数来检查队列是否为空。

如果队列为空,.empty() 函数返回 1(true);否则返回 0(false):

实例

queue<string> cars;
cout << cars.empty(); // 输出 1(队列为空)
运行实例 »

点击 "运行实例" 按钮查看在线实例

实例

queue<string> cars;

cars.push("Volvo");
cars.push("BMW");
cars.push("Ford");
cars.push("Tesla");

cout << cars.empty();  // 输出 0(队列不为空)
运行实例 »

点击 "运行实例" 按钮查看在线实例

栈与队列

队列经常与栈一起提及,栈是上一页描述的一种类似的数据结构。

相关视频

更多

免费

php8,我来也
初级php8,我来也

321849次学习

收藏

免费

Thinkphp6.0正式版视频教程
中级Thinkphp6.0正式版视频教程

382470次学习

收藏

免费

细说PHP第一季
中级细说PHP第一季

282865次学习

收藏

免费

简单聊聊PHP创业那点事
初级简单聊聊PHP创业那点事

13418次学习

收藏
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号