vector¶
约 280 个字 46 行代码 预计阅读时间 2 分钟
std::vector
是 C++ 中非常强大的容器,除了基本的 push_back
、size
、[]
运算符等常见操作外,还有一些 高级用法 可以大幅提升代码的表达力和效率。下面我会分类讲解,并附上实用示例。
一、初始化技巧¶
1. 用值初始化¶
2. 用数组/列表初始化¶
3. 从已有容器拷贝一部分¶
二、修改与操作技巧¶
1. 插入与删除¶
2. 删除一段区间¶
3. 清空与判断¶
4. 交换两个 vector¶
三、查找与排序相关¶
1. 查找元素位置¶
C++
auto it = find(v.begin(), v.end(), 3);
if (it != v.end()) {
int index = it - v.begin(); // 找到3的位置
}
2. 排序¶
3. 自定义排序¶
四、遍历技巧¶
1. 范围 for(推荐)¶
2. 用迭代器遍历¶
3. 使用 for_each
和 Lambda¶
五、技巧与陷阱¶
1. 快速清空 vector 并释放内存¶
2. vector 的容量(capacity)¶
六、二维 vector 高级用法¶
1. 初始化¶
2. 排序二维 vector(按行最大值排序)¶
C++
sort(matrix.begin(), matrix.end(), [](const vector<int> &a, const vector<int> &b) {
return *max_element(a.begin(), a.end()) < *max_element(b.begin(), b.end());
});
七、和算法结合的写法¶
C++
#include <bits/stdc++.h>
using namespace std;
int main() {
vector<int> v = {1, 5, 2, 4, 3};
// 保留偶数
vector<int> evens;
copy_if(v.begin(), v.end(), back_inserter(evens), [](int x) { return x % 2 == 0; });
// 全部+1
transform(v.begin(), v.end(), v.begin(), [](int x) { return x + 1; });
// 输出
for (int x : v) cout << x << " ";
}
总结¶
功能 | 方法 |
---|---|
插入/删除 | insert 、erase 、clear |
排序 | sort 、自定义比较函数 |
查找 | find 、迭代器运算 |
遍历 | 范围 for、for_each |
容量控制 | reserve 、shrink_to_fit |
二维数组 | vector<vector<T>> |
函数式操作 | copy_if 、transform |