底层数据结构

连续内存的动态数组。当 size 达到 capacity 时,分配更大的内存块(通常翻倍),将所有元素整体搬迁过去,释放旧内存。扩容瞬间所有指向旧内存的迭代器、指针、引用全部失效。

复杂度

操作复杂度说明
operator[]O(1)随机访问,无边界检查
at(i)O(1)随机访问,带边界检查
push_back均摊 O(1)尾部插入,触发扩容时为 O(n)
emplace_back均摊 O(1)尾部原位构造
pop_backO(1)尾部删除
insertO(n)中间插入,需移动后续元素
eraseO(n)中间删除,需移动后续元素
size / emptyO(1)
clearO(n)调用析构,capacity 不变
reserve(n)O(n)预分配容量,避免反复扩容
sortO(n log n)配合 sort(begin, end)

关键方法

方法说明
v[i] / v.at(i)下标访问
v.front() / v.back()首/尾元素引用
v.data()返回底层数组指针
push_back(x)尾部拷贝插入
emplace_back(args…)尾部原位构造
pop_back()尾部删除
insert(it, x)在迭代器位置前插入
erase(it)删除迭代器指向的元素
size() / capacity()元素数 / 已分配容量
reserve(n) / resize(n)预分配 / 改变 size
clear()清空元素,capacity 不变
shrink_to_fit()请求释放多余容量

伪代码示例

// 创建一个空的整数向量
vector<int> v

// 在尾部逐一添加元素
loop i from 1 to 5:
    v.push_back(i)

// 预分配容量
v.reserve(100)

// 遍历与输出
for i from 0 to v.size() - 1:
    print v[i]

// 排序与去重
sort(v.begin(), v.end())
v.erase(unique(v.begin(), v.end()), v.end())

// 二维向量 (3x4 矩阵)
vector<vector<int>> mat(3, vector<int>(4, 0))

相关链接