1. vector基础概念与核心优势
C++标准库中的vector是最常用的动态数组容器,它完美融合了数组的高效随机访问和动态内存管理的灵活性。与普通数组相比,vector能够自动处理内存分配和释放,让开发者从繁琐的内存管理中解放出来。
vector本质上是一个类模板,这意味着它可以存储任意类型的元素——从基本数据类型到自定义类对象。这种泛型特性是它与string类的本质区别,string专为字符数据优化,而vector则是通用的数据容器。
关键设计理念:vector通过连续的线性空间存储元素,这使得它既保持了数组的O(1)随机访问特性,又实现了动态扩容能力。当空间不足时,vector会自动分配更大的内存块(通常是原容量的1.5或2倍),并将原有元素迁移到新空间。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. vector核心接口详解
2.1 构造与初始化
vector提供多种构造函数满足不同场景需求:
cpp复制// 无参构造 - 创建空vector
vector<int> v1;
// 指定大小和初始值构造
vector<double> v2(10, 3.14); // 10个3.14
// 迭代器区间构造
int arr[] = {1,2,3,4,5};
vector<int> v3(arr, arr+5);
// 拷贝构造
vector<int> v4(v3);
实际开发中最常用的是无参构造+后续push_back填充数据的方式。但若提前知道元素数量,推荐使用reserve预分配空间:
cpp复制vector<Student> class;
class.reserve(60); // 预分配60个学生对象空间
2.2 迭代器使用规范
vector支持多种迭代器访问方式:
cpp复制vector<int> nums = {1,2,3,4,5};
// 正向迭代器
for(auto it = nums.begin(); it != nums.end(); ++it) {
cout << *it << " ";
}
// 反向迭代器
for(auto rit = nums.rbegin(); rit != nums.rend(); ++rit) {
cout << *rit << "
