vector 的常见用法
本质是'动态数组'——支持在尾部快速添加/删除元素,自动管理内存(无需手动分配/释放),还提供了丰富的操作接口。
vector<int>:是模板参数,指定这个 vector 只能存储 int 类型的数据(比如 10、-5、0 等整数)。如果想存字符串,就写成 vector<string>;存浮点数就是 vector<double>。
支持随机访问。
定义一个空的 vector<int>,命名为 v。
push_back()
将 n 个整数读入 v。
正向遍历 v,将所有元素依次输出 // 随机访问
初始化
定义一个 vector<int>,初始化它的长度为 n,所有元素都是 k。
vector<int> v(n, k)
pop_back()
直接删除 vector 的最后一个元素,并将 vector 的长度(size())减 1;仅删除元素,不会释放 vector 底层预留的内存(capacity() 不变)。
clear()
清空 vector 中所有的元素(但不会释放底层预留的内存)。
size()
返回 vector 中实际的元素个数。区分 size() 是'实际元素数',capacity() 是'预留内存可存的元素数'。
insert()
是 vector 的插入方法,支持在任意位置插入单个元素、多个相同元素或一段元素,核心特点是'插入后,后续元素自动后移'。
v.insert(pos, val):在迭代器 pos 指向的位置插入单个元素 val,返回新插入元素的迭代器。
v.insert(pos, n, val):在迭代器 pos 指向的位置插入 n 个重复的元素 val。
v.insert(pos, first, last):在迭代器 pos 指向的位置插入 [first, last) 区间的元素(比如另一个 vector 的部分元素)。
erase()
erase() 是 vector 的删除方法,支持删除单个位置或一段区间的元素,核心特点是'删除后,后续元素自动前移'。
v.erase(pos):删除迭代器 pos 指向的单个元素,返回指向被删元素下一个位置的迭代器。
v.erase(first, last):删除 [first, last) 区间的所有元素,返回指向最后一个被删元素下一个位置的迭代器。
vector 比较
vector 的比较遵循'字典序规则',vector 支持直接使用 ==、!=、<、>、<=、>= 进行比较,无需额外函数,只需保证两个 vector 的元素类型可比较(比如 int、string 等基础类型)。
vector 数组
vector<int> vs[10],表示 10 个空的 vector<int>。每个元素 vs[0]、vs[1]...vs[9] 都是一个独立的 vector<int>。每个 vector<int> 初始化时默认是空的(size()=0,capacity() 通常为 0)。
vs[i].push_back() 函数将第 i 行的所有元素推入 vs[i]。输出用 cout << vs[i][j]。每 i 行 j 可能是不同的。
vector 二维
vector<vector<int>> vs(n, vector<int>()),表示二维的 vector,其中第一维长度为 n,即相当于定义了 n 个空的 vector<int>;第 i 行有 k 个正整数,使用 vs[i].push_back() 函数将第 i 行的所有元素推入 vs[i]。
set 的常见用法
定义一个空的 ,命名为 。

