您的位置:

std::vector - 动态数组容器

std::vector 是 C++ 标准库提供的动态数组容器,它是一个能够存储任意类型的数据,并且能够自动扩展和缩小容量的容器。

一、使用方法

使用 std::vector 首先需要包含头文件 <vector>

#include <vector>

定义一个 std::vector 对象:

std::vector<int> vec; // 定义一个 int 类型的 vector 对象

std::vector 中添加元素:

vec.push_back(1); // 向 vector 中添加一个元素 1
vec.push_back(2); // 向 vector 中添加一个元素 2
vec.push_back(3); // 向 vector 中添加一个元素 3

遍历 std::vector 中的元素:

for (auto it = vec.begin(); it != vec.end(); ++it) {
    std::cout << *it << " "; // 输出 vector 中的元素
}
// 输出:1 2 3

二、容量操作

通过 std::vector 提供的容量操作,我们可以查询和修改 vector 的容量信息。

查询 vector 的容量信息:

std::cout << vec.size() << std::endl; // 输出 vector 的元素个数
std::cout << vec.capacity() << std::endl; // 输出 vector 的容量
std::cout << vec.empty() << std::endl; // 判断 vector 是否为空

修改 vector 容量:

vec.resize(5); // 将 vector 的容量改为 5,未使用的元素初始化为默认值
vec.reserve(10); // 将 vector 的容量预留为 10,但 vector 的元素个数不变
vec.shrink_to_fit(); // 将 vector 的容量缩小到当前元素个数,节省不必要的空间

三、元素操作

通过 std::vector 提供的元素操作,我们可以对 vector 中的元素进行访问、修改、添加和删除等操作。

1. 访问元素

使用 std::vector 提供的下标操作或迭代器操作访问 vector 中的元素。

vec[0]; // 访问 vector 中 index 为 0 的元素
vec.at(0); // 访问 vector 中 index 为 0 的元素,越界时会抛出异常
vec.front(); // 返回 vector 的第一个元素
vec.back(); // 返回 vector 的最后一个元素

2. 修改元素

使用 std::vector 提供的下标操作或迭代器操作修改 vector 中的元素。

vec[0] = 4; // 修改 vector 中 index 为 0 的元素为 4
*vec.begin() = 5; // 修改 vector 中第一个元素为 5

3. 添加元素

使用 std::vector 提供的 push_back() 操作向 vector 中添加元素。

vec.push_back(4); // 向 vector 中添加一个元素 4

4. 删除元素

使用 std::vector 提供的 erase() 操作删除 vector 中的元素。

vec.erase(vec.begin() + 1); // 删除 vector 中下标为 1 的元素
vec.pop_back(); // 删除 vector 中的最后一个元素

四、注意事项

1. 对于大规模的数据处理,使用 std::vector 可能会占用过多的内存。

2. 在循环中遍历 vector 元素时,应该使用迭代器进行操作,避免下标访问越界。

for (auto it = vec.begin(); it != vec.end(); ++it) {
    std::cout << *it << " "; // 输出 vector 中的元素
}

3. 对 vector 进行扩容、缩容等操作时,可能会影响 vector 中元素在内存中的存储位置。

五、总结

std::vector 提供了一个灵活的动态数组容器,能够存储任意类型的数据,并且能够自动扩展和缩小容量。同时,通过 std::vector 提供的容量操作和元素操作,我们可以方便地查询和修改 vector 的容量信息,以及对 vector 中的元素进行访问、修改、添加和删除等操作。使用 std::vector 需要注意的是内存占用和迭代器操作。