C++ 向量
C++ Vector
C++ 中的 vector 类似于一个可调整大小的 数组。
向量和数组都是用于存储同一数据类型多个元素的 数据结构。
数组和向量的区别在于,数组的大小无法修改(你不能向数组中添加或删除元素)。然而,向量可以根据需要增长或缩小。
要使用 vector,你必须包含 <vector> 头文件
// 包含 vector 库
#include <vector>
创建 Vector
要创建 vector,请使用 vector 关键字,并在尖括号 <> 中指定它应存储的值的**类型**,然后是 vector 的名称,例如:vector<type> vectorName。
示例
// 创建一个名为 cars 的 vector,用于存储字符串
vector<string> cars;
如果你想在声明时就添加元素,请将它们放在用逗号分隔的列表中,用花括号 {} 包围,就像数组一样
示例
// 创建一个名为 cars 的 vector,用于存储字符串
vector<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
// 打印 vector 元素
for (string car : cars) {
cout << car << "\n";
}
自己动手试一试 »
注意: Vector 的类型(我们示例中的 string)在声明后无法更改。
访问 Vector
你可以通过方括号 [] 中的索引号来访问 vector 元素。
Vector 和数组一样,都是从 0 开始索引的,这意味着 [0] 是第一个元素,[1] 是第二个元素,依此类推。
示例
// 创建一个名为 cars 的 vector,用于存储字符串
vector<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
// 获取第一个元素
cout << cars[0]; // 输出 Volvo
// 获取第二个元素
cout << cars[1]; // 输出 BMW
自己动手试一试 »
使用 vector 库的一个优点是它包含许多有用的函数。例如,你可以使用 .front() 和 .back() 函数来访问 vector 的第一个或最后一个元素。
示例
// 创建一个名为 cars 的 vector,用于存储字符串
vector<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
// 获取第一个元素
cout << cars.front();
// 获取最后一个元素
cout << cars.back();
自己动手试一试 »
要访问指定索引处的元素,可以使用 .at() 函数并指定索引号。
示例
// 创建一个名为 cars 的 vector,用于存储字符串
vector<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
// 获取第二个元素
cout << cars.at(1);
// 获取第三个元素
cout << cars.at(2);
自己动手试一试 »
注意: .at() 函数通常比方括号 [] 更受欢迎,因为它可以在发生错误时通知你。
例如,如果元素超出范围
示例
// 创建一个名为 cars 的 vector,用于存储字符串
vector<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
// 尝试访问不存在的元素(会抛出错误消息)
cout << cars.at(6);
自己动手试一试 »
更改 Vector 元素
要更改特定元素的值,可以引用索引号。
示例
vector<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
// 更改第一个元素的值
cars[0] = "Opel";
cout << cars[0]; // 现在输出 Opel 而不是 Volvo
自己动手试一试 »
但是,使用 .at() 函数更安全。
示例
vector<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
// 更改第一个元素的值
cars.at(0) = "Opel";
cout << cars.at(0); // 现在输出 Opel 而不是 Volvo
自己动手试一试 »
添加 Vector 元素
Vector 和数组之间最大的区别在于,Vector 可以动态增长。这意味着你可以向 Vector 中添加或删除元素。
要向 Vector 添加元素,可以使用 .push_back() 函数,它会在 Vector 的末尾添加一个元素。
你可以添加任意数量的元素。
示例
vector<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
cars.push_back("Tesla");
cars.push_back("VW");
cars.push_back("Mitsubishi");
cars.push_back("Mini");
自己动手试一试 »
删除 Vector 元素
要从 Vector 中删除元素,可以使用 .pop_back() 函数,它会删除 Vector 末尾的一个元素。
注意: 元素通常只在 Vector 的末尾添加和删除。如果你需要在两端都添加或删除元素,通常最好使用 deque 而不是 vector。
Vector 大小
要了解 Vector 中有多少个元素,请使用 .size() 函数。
检查 Vector 是否为空
还有一个函数可以用来检查 vector 是否为空。
.empty() 函数如果 vector 为空则返回 1(true),如果包含一个或多个元素则返回 0(false)。
示例
vector<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
cout << cars.empty(); // 输出 0 (非空)
自己动手试一试 »
循环遍历 Vector
你可以使用 for 循环结合 .size() 函数来遍历 vector 元素。
示例
vector<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
for (int i = 0; i < cars.size(); i++) {
cout << cars[i] << "\n";
}
自己动手试一试 »
你还可以使用**基于范围的 for 循环**(在 C++11 (2011) 版本中引入),这种方式更简洁,可读性更好。
示例
vector<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
for (string car : cars) {
cout << car << "\n";
}
自己动手试一试 »
提示: 也可以使用 迭代器 来遍历 vector,你将在后面的章节中学习更多相关知识。
完整的 Vector 参考
有关 Vector 函数的完整参考,请访问我们的 C++ Vector 参考。