Vector
头文件:
#include <vector>
特点:连续内存,尾部操作 O(1),中间插入/删除 O(N)。
1. 初始化 (生)
vector<int> v; // 1. 空数组
vector<int> v(10); // 2. 1个 vector,大小为10,值全为0
vector<int> v(10, -1); // 3. 1个 vector,大小为10,值全为-1 (DP表常用)
vector<int> v = {1, 2, 3}; // 4. 列表初始化
vector<int> v(other_v); // 5. 拷贝构造
// ---------- ⚠️ 关键区分 ⚠️ ----------
vector<int> v_arr[10]; // 6. [数组] 10个 独立的空 vector (常用于邻接表/哈希桶)
//类比 int arr[10]
2. 常用操作 (存/取) - O(1)
int x = v.back(); // 获取最后一个元素 (比 v[n-1] 方便)
int y = v.front(); // 获取第一个元素
3. 插入与删除 (动) - O(N)
注意:需要传入迭代器,且操作后会移动后续元素,慢!
// 在第 i 个位置前插入
v.insert(v.begin() + i, 100);
// 把 v2 的所有元素拼接到 v1 的末尾
v1.insert(v1.end(), v2.begin(), v2.end());
// 删除第 i 个元素
v.erase(v.begin() + i);
// 清空所有元素 (size变0,capacity不变)
v.clear();
4. 避坑指南
- 越界不报错:
v[i]越界通常不会立即报错,但会读到脏数据或导致后续崩溃。 - 内存机制:
clear()不会释放内存。
浙公网安备 33010602011771号