网站统计热力图,展览展示设计有限公司,seo是搜索引擎营销吗,wordpress 媒体库 APIvector 是 C 标准模板库#xff08;STL#xff09;中最常用的顺序容器之一。与数组相比#xff0c;vector 具有动态大小调整、内存自动管理等特点#xff0c;极大地方便了日常编程工作。本文将从 vector 的基本用法、常用操作、具体示例等方面进行详细介绍。 1. vector 简介…vector 是 C 标准模板库STL中最常用的顺序容器之一。与数组相比vector 具有动态大小调整、内存自动管理等特点极大地方便了日常编程工作。本文将从 vector 的基本用法、常用操作、具体示例等方面进行详细介绍。 1. vector 简介
vector 是一种动态数组可以根据需要自动调整其大小。在添加或删除元素时vector 会自动分配和释放内存。
常见的 vector 操作
自动扩展当 vector 容量不足时自动增加容量。随机访问通过下标访问元素时间复杂度为 O(1)。自动管理内存当 vector 被销毁时自动释放内存。
2. vector 的基本用法
#include iostream
#include vectorint main() {// 定义一个存储 int 类型的 vectorstd::vectorint vec;// 向 vector 中添加元素vec.push_back(10);vec.push_back(20);vec.push_back(30);// 输出 vector 的元素for (int i 0; i vec.size(); i) {std::cout vec[ i ] vec[i] std::endl;}// 获取 vector 的大小std::cout Vector size: vec.size() std::endl;return 0;
}vec[0] 10
vec[1] 20
vec[2] 30
Vector size: 3在上面的代码中push_back() 用于向 vector 的尾部添加元素size() 用于获取当前元素的个数。
3. 常用操作
1. 初始化 vector
可以通过多种方式初始化 vector
// 空的 vector
std::vectorint v1;// 使用默认值初始化
std::vectorint v2(5); // 创建包含 5 个元素的 vector初始值为 0
std::vectorint v3(5, 100); // 创建 5 个元素初始值为 100// 使用已有数组初始化
int arr[] {1, 2, 3, 4, 5};
std::vectorint v4(arr, arr 5); // 使用数组的指针初始化2. 插入与删除操作
#include iostream
#include vectorint main() {std::vectorint vec {1, 2, 3, 4, 5};// 在指定位置插入元素vec.insert(vec.begin() 2, 10); // 在第三个位置插入 10// 输出 vector 的所有元素for (int v : vec) {std::cout v ;}std::cout std::endl;// 删除第三个元素vec.erase(vec.begin() 2);// 输出删除后的元素for (int v : vec) {std::cout v ;}std::cout std::endl;return 0;
}输出结果 1 2 10 3 4 5
1 2 3 4 5 3. 清空与释放内存
std::vectorint vec {1, 2, 3};
vec.clear(); // 清空 vector但容量不变
vec.shrink_to_fit(); // 释放未使用的内存4. vector 的高级用法
1. 迭代器
vector 提供了随机访问迭代器可以方便地遍历容器
#include iostream
#include vectorint main() {std::vectorint vec {1, 2, 3, 4, 5};// 使用迭代器遍历 vectorfor (std::vectorint::iterator it vec.begin(); it ! vec.end(); it) {std::cout *it ;}std::cout std::endl;return 0;
}2. 反向遍历
vector 允许反向遍历
for (auto it vec.rbegin(); it ! vec.rend(); it) {std::cout *it ;
}3. 动态调整容量
vector 自动管理内存但我们可以手动控制容量
std::vectorint vec;
vec.reserve(100); // 预分配内存防止频繁重新分配5. 常见问题与优化 频繁插入删除问题vector 的插入和删除操作在末尾效率较高但在中间位置操作会导致大量元素的移动建议在需要频繁插入或删除的情况下使用 std::list 或 std::deque。 内存管理vector 在增长时会以倍数方式分配内存减少内存分配的次数以提高效率。因此如果已知大致的容量可以提前使用 reserve() 进行预分配。 数据访问vector 支持随机访问访问效率非常高。与 list 相比vector 更适合频繁访问数据的场景。
6. 总结
vector 作为 C 中最常用的容器之一提供了灵活、高效的动态数组操作。它不仅可以自动管理内存还支持随机访问、动态调整大小等功能。在实际开发中我们应根据不同的应用场景选择合适的 STL 容器vector 适用于大多数需要动态数组的场景。
通过上述的代码示例大家可以更好地理解 vector 的基本操作和高级用法。在未来的开发中熟练使用 vector 将显著提高代码的可维护性和性能。