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
需要注意的是内存占用和迭代器操作。