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

