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++ 列表

列表类似于 向量,因为它可以存储相同类型 的多个元素,并且可以动态地增长大小。

但是,列表和向量之间有两个主要区别

  1. 您可以从列表的开头和结尾添加和删除元素,而向量通常针对在结尾添加和删除进行了优化。

  2. 与向量不同,列表不支持随机访问,这意味着您不能直接跳转到特定索引,或通过索引号访问元素。

要使用列表,您必须包含 <list> 头文件

// 包含列表库
#include <list>

创建列表

要创建列表,请使用 list 关键字,并指定它应在尖括号 <> 中存储的值的类型,然后是列表的名称,例如:list<type> listName

示例

// 创建一个名为 cars 的列表,用于存储字符串
list<string> cars;

如果您想在声明时添加元素,请将它们放在花括号 {} 中用逗号分隔的列表中

示例

// 创建一个名为 cars 的列表,用于存储字符串
list<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};

// 打印列表元素
for (string car : cars) {
  cout << car << "\n";
}
自己试试 »

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


访问列表

您不能通过引用索引号来访问列表元素,就像使用数组和向量一样。

但是,您可以使用 .front().back() 函数分别访问第一个或最后一个元素

示例

// 创建一个名为 cars 的列表,用于存储字符串
list<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};

// 获取第一个元素
cout << cars.front();  // 输出 Volvo

// 获取最后一个元素
cout << cars.back();  // 输出 Mazda
自己试试 »


更改列表元素

您也可以使用 .front().back() 函数更改第一个或最后一个元素的值

示例

list<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};

// 更改第一个元素的值
cars.front() = "Opel";

// 更改最后一个元素的值
cars.back() = "Toyota";

cout << cars.front(); // 现在输出 Opel 而不是 Volvo
cout << cars.back();  // 现在输出 Toyota 而不是 Mazda
自己试试 »

添加列表元素

要向列表添加元素,您可以使用 .push_front() 在列表开头插入元素,并使用 .push_back() 在结尾添加元素

示例

list<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};

// 在开头添加元素
cars.push_front("Tesla");

// 在结尾添加元素
cars.push_back("VW");
自己试试 »

删除列表元素

要从列表中删除元素,请使用 .pop_front() 从列表开头删除元素,并使用 .pop_back() 在结尾删除元素

示例

list<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};

// 删除第一个元素
cars.pop_front();

// 删除最后一个元素
cars.pop_back();
自己试试 »

列表大小

要找出列表中有多少个元素,请使用 .size() 函数

示例

list<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
cout << cars.size();  // 输出 4
自己试试 »

检查列表是否为空

使用 .empty() 函数来找出列表是否为空。

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

示例

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

示例

list<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
cout << cars.empty();  // 输出 0(不为空)
自己试试 »

遍历列表

您不能使用传统的 for 循环结合 .size() 函数来遍历列表元素,因为无法通过索引访问列表中的元素

示例

list<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};

for (int i = 0; i < cars.size(); i++) {
  cout << cars[i] << "\n";
}

遍历列表最简单的方法是使用for-each 循环

示例

list<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};

for (string car : cars) {
  cout << car << "\n";
}
自己试试 »

提示:也可以使用 迭代器 遍历列表,您将在后面的章节中了解有关迭代器的更多信息。



×

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.