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. 避坑指南

  1. 越界不报错v[i] 越界通常不会立即报错,但会读到脏数据或导致后续崩溃。
  2. 内存机制clear() 不会释放内存。

posted @ 2025-12-04 20:00  Sunstreamy  阅读(2)  评论(0)    收藏  举报