Menu
×
   ❮     
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

C++ 教程

C++ 主页 C++ 简介 C++ 入门 C++ 语法 C++ 输出 C++ 注释 C++ 变量 C++ 用户输入 C++ 数据类型 C++ 运算符 C++ 字符串 C++ 数学 C++ 布尔值 C++ if...Else C++ Switch C++ While 循环 C++ For 循环 C++ Break/Continue C++ 数组 C++ 结构体 C++ 枚举 C++ 引用 C++ 指针

C++ 函数

C++ 函数 C++ 函数参数 C++ 函数重载 C++ 范围 C++ 递归

C++ 类

C++ 面向对象编程 C++ 类/对象 C++ 类方法 C++ 构造函数 C++ 访问修饰符 C++ 封装 C++ 继承 C++ 多态 C++ 文件 C++ 异常 C++ 日期

C++ 数据结构

C++ 数据结构 & STL C++ 向量 C++ 列表 C++ 栈 C++ 队列 C++ 双端队列 C++ 集合 C++ 映射 C++ 迭代器 C++ 算法

C++ 如何做

C++ 加两个数 C++ 随机数

C++ 参考

C++ 参考 C++ 关键字 C++ <iostream> C++ <fstream> C++ <cmath> C++ <string> C++ <cstring> C++ <ctime> C++ <vector> C++ <algorithm>

C++ 示例

C++ 示例 C++ 现实世界中的例子 C++ 编译器 C++ 练习 C++ 测验 C++ 证书


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() 函数

示例

cout << cars.size();
自己尝试 »

检查队列是否为空

使用 .empty() 函数来确定队列是否为空。

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

示例

queue<string> cars;
cout << cars.empty(); // 输出 1(队列为空)
自己尝试 »

示例

queue<string> cars;

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

cout << cars.empty();  // 输出 0(不为空)
自己尝试 »

栈和队列

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


×

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
[email protected]

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail:
[email protected]

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.

Copyright 1999-2024 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS.