1. vector容器基础认知
在C++标准模板库(STL)中,vector是最常用的动态数组容器之一。与普通数组不同,vector具有自动管理内存的能力,能够根据需要动态调整大小,同时保持了数组随机访问的高效性(时间复杂度O(1))。理解vector的各种初始化方式,是高效使用这一容器的基础。
vector本质上是一个类模板,使用时需要指定元素类型,如vector<int>表示存储int类型的动态数组。其内部通过连续内存空间存储元素,当容量不足时会自动重新分配更大的内存空间(通常是当前容量的2倍),并将原有元素拷贝到新空间。
注意:虽然vector能自动扩容,但频繁扩容会导致性能下降。如果预先知道元素数量,建议通过初始化方式预留空间。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. vector的八种初始化方式详解
2.1 默认初始化
cpp复制vector<int> a1; // 创建一个空的可变长数组
这是最简单的初始化方式,创建一个不包含任何元素的空vector。此时:
size()返回0capacity()由实现定义(通常为0)- 内存尚未分配
适用场景:
- 元素数量未知且可能很少时
- 作为函数返回值容器(后续通过move语义优化)
2.2 指定大小的初始化
cpp复制vector<int> a2(N); // 创建大小为N的vector
这种初始化方式:
- 创建包含N个元素的vector
- 元素进行值初始化(int为0,指针为nullptr,类类型调用默认构造函数)
- 容量(capacity)至少为N
内存布局示例(N=5):
code复制[0][0][0][0][0]
性能特点:
- 一次性分配足够内存,避免后续插入时的多次扩容
- 适合已知元素数量但初始值不重要或全为0的场景
2.3 指定大小和初始值的初始化
cpp复制vector<int> a3(N, 10); // 创建大小为N且所有元素为10的vector
这种初始化方式:
- 创建包含N个元素的vector
- 所有元素初始化为指定值(此处为10)
- 容量至少为N
典型应用场景:
- 初始化全1矩阵
- 创建具有相同默认值的缓冲区
- 需要特定初始值的统计计数
