在 C++ 编程中,std::vector 是标准模板库(STL)里最常用的容器之一。它本质上是一个动态数组,底层基于连续内存块实现,既拥有普通数组高效的随机访问能力,又能在运行时自动调整大小,省去了手动管理内存的麻烦。
什么是 std::vector?
std::vector 属于序列容器,与普通数组最大的区别在于其大小可变。定义普通数组时长度必须固定,而 vector 可以在程序运行过程中根据需要扩容或缩容。这种灵活性使得它在处理不确定数量的数据集合时非常实用。
基本特性
动态扩展
当向 vector 添加元素导致当前容量不足时,它会自动分配更大的内存空间,将旧数据复制过去并释放旧内存。虽然这个过程涉及内存分配和拷贝,但内部通常采用几何级数增长策略,摊还后的插入成本很低。
随机访问
得益于连续内存布局,vector 支持 O(1) 时间复杂度的随机访问。通过下标直接定位元素的速度非常快,这与原生数组无异。
内存管理
vector 封装了内存分配逻辑。开发者可以通过 reserve() 预先预留空间,减少因频繁扩容带来的性能损耗;也可以通过 shrink_to_fit() 尝试释放多余内存。
基本操作实战
定义与初始化
创建 vector 有多种方式,可以根据场景选择最合适的写法:
#include <iostream>
#include <vector>
int main() {
// 空 vector
std::vector<int> vec1;
// 初始化列表
std::vector<int> vec2 = {1, 2, 3, 4, 5};
// 指定数量与初始值
std::vector<int> vec3(10, 0);
// 复制构造
std::vector<int> vec4(vec2);
// 部分范围构造
std::vector<> ;
;
}


