std::vector
时间: 2024-10-20 08:56:08
(部分内容来自网络,其真实性存疑,为了避免对您造成误导,请谨慎甄别。)
std::vector
是 C++ 标准库中的一个动态数组容器,它提供了一个可变大小的数组,可以存储任意类型的对象。std::vector
是一个非常灵活且高效的选择,当你需要一个可以动态增加或减少大小的数组时,它是最常用的容器之一。以下是有关 std::vector
的一些要点以及常用操作的示例。
基本特性
1. 动态大小:与静态数组不同,std::vector
可以在运行时动态调整大小。
2. 随机访问:支持快速随机访问元素,使用 operator[]
或 at()
方法。
3. 内存管理:自动管理内存分配与释放,避免内存泄漏。
4. 支持迭代器:可以使用迭代器遍历元素,与 STL 兼容。
常用操作
1. 包含头文件
在使用 std::vector
前,需要包含头文件:
cpp#include <vector>
2. 创建和初始化
cppstd::vector<int> vec1; // 创建一个空的整数 vector
std::vector<int> vec2(10); // 创建一个包含 10 个默认初始化元素的 vector
std::vector<int> vec3(10, 5); // 创建一个包含 10 个值为 5 的元素的 vector
std::vector<int> vec4 = {1, 2, 3, 4, 5}; // 使用初始化列表初始化
3. 添加和删除元素
cppvec1.push_back(1); // 在末尾添加元素
vec1.push_back(2);
vec1.push_back(3);
vec1.pop_back(); // 删除末尾元素
vec1.insert(vec1.begin() + 1, 10); // 在指定位置插入元素
vec1.erase(vec1.begin() + 1); // 删除指定位置的元素
vec1.clear(); // 清空 vector,删除所有元素
4. 访问元素
cppint first = vec4[0]; // 使用 operator[] 访问元素
int second = vec4.at(1); // 使用 at() 访问元素,提供边界检查
if (!vec4.empty()) { // 检查 vector 是否为空
int size = vec4.size(); // 获取当前元素数量
}
5. 遍历元素
cppfor (size_t i = 0; i < vec4.size(); ++i) {
std::cout << vec4[i] << " "; // 使用下标访问
}
for (auto& element : vec4) {
std::cout << element << " "; // 使用范围 for 循环
}
// 使用迭代器
for (std::vector<int>::iterator it = vec4.begin(); it != vec4.end(); ++it) {
std::cout << *it << " ";
}
6. 其他有用的方法
cppsize_t size = vec4.size(); // 获取大小
size_t capacity = vec4.capacity(); // 获取当前容量
vec4.resize(20); // 改变大小,如果新大小大于当前大小则填充默认值
vec4.reserve(50); // 提前分配内存以避免多次内存分配
vec4.shrink_to_fit(); // 减少容量以适应当前大小
注意事项
- 由于 std::vector
在添加新元素时可能会重新分配内存,因此在已知元素数量时,使用 reserve()
可以提高性能。
- 使用 at()
方法能提供边界检查,而使用 []
操作符则无法提供边界检查。
总结
std::vector
是 C++ 中最常用的容器之一,适合存储动态大小的数据集合。它支持快速访问、插入和删除操作,是实现许多数据结构和算法的基础。理解并灵活运用 std::vector
是 C++ 开发中的重要技能。