C++ STL 容器 vector 详解
vector 的介绍
vector 是 C++ 标准模板库(STL)中最常用、最核心的容器之一,本质是动态数组。它既保留了静态数组的随机访问优势,又解决了静态数组长度固定的缺陷,支持自动扩容、动态增删元素,是日常开发中替代原始数组的首选工具。
一、vector 核心特性
1. 本质
vector 底层基于连续的内存空间实现(与静态数组一致),内部维护三个关键指针(C++11 后为迭代器):
begin():指向数组首元素的指针;end():指向数组尾元素的下一个位置的指针(即'尾后迭代器');capacity()对应的指针:指向当前内存块的末尾(即已分配内存的最后位置)。
2. 核心优势
- 随机访问高效:支持
[]下标访问和at()访问,时间复杂度 O(1); - 动态扩容:无需手动管理内存,元素超过当前容量时自动分配更大的内存块;
- 接口丰富:STL 提供了完整的增删改查、容量控制、迭代器等接口;
- 与原始数组兼容:可通过
data()方法获取底层连续内存的指针。
3. 局限
- 中间插入 / 删除低效:由于内存连续,在中间位置插入 / 删除元素时,需要移动后续所有元素(时间复杂度 O(n));
- 扩容有开销:自动扩容时会经历'分配新内存→拷贝旧元素→释放旧内存'的过程;
- 不支持在尾部以外的位置高效插入:若需频繁在头部 / 中间插入元素,建议用
list或deque。
二、vector 定义与初始化
vector 是模板类,定义时需指定元素类型(如 int、string、自定义结构体),语法为 std::vector<T>(需包含头文件 <vector>)。
1. 头文件与命名空间
#include <vector>
using namespace std;
2. 常见初始化方式
| 初始化方式 | 语法示例 | 说明 |
|---|---|---|
| 默认初始化 | vector<int> v; | 空 vector,size=0 |
| 指定大小 | vector<int> v(5); | 初始化为 5 个元素,默认值为 0 |
| 指定大小 + 初始值 | vector<int> v(5, 10); |


