C++ 中 vector 的常用操作技巧
在 C++ 中,std::vector
是一个非常灵活和常用的动态数组容器。下面是一些常用的 vector
操作技巧,帮助你更有效地使用 vector
:
初始化和填充:
- 默认构造:
std::vector<int> v;
- 指定大小并初始化为默认值:
std::vector<int> v(10);
- 指定大小并初始化为特定值:
std::vector<int> v(10, 5);
- 使用列表初始化:
std::vector<int> v = {1, 2, 3, 4, 5};
- 默认构造:
添加和插入元素:
- 添加元素到末尾:
v.push_back(6);
- 插入元素到指定位置:
v.insert(v.begin() + 2, 10);
- 添加元素到末尾:
删除元素:
- 删除末尾元素:
v.pop_back();
- 删除指定位置的元素:
v.erase(v.begin() + 2);
- 删除范围内的元素:
v.erase(v.begin(), v.begin() + 3);
- 清空所有元素:
v.clear();
- 删除末尾元素:
访问元素:
- 使用索引访问:
int value = v[2];
- at方法(带边界检查):
int value = v.at(2);
- 访问第一个或最后一个元素:
int first = v.front(); int last = v.back();
- 使用索引访问:
容量和大小管理:
- 获取当前大小:
size_t size = v.size();
- 检查是否为空:
bool isEmpty = v.empty();
- 增大容量:
v.reserve(20);
(为将来元素添加预留空间) - 减小容量以适应大小:
v.shrink_to_fit();
- 获取当前大小:
遍历元素:
- 使用范围for循环:
for (const auto& elem : v) { std::cout << elem << " "; }
- 使用迭代器:
for (auto it = v.begin(); it != v.end(); ++it) { std::cout << *it << " "; }
- 使用范围for循环:
排序和逆序:
- 排序:
std::sort(v.begin(), v.end());
- 逆序:
std::reverse(v.begin(), v.end());
- 排序:
查找元素:
- 查找特定值:
auto it = std::find(v.begin(), v.end(), 3);
- 检查是否找到:
if (it != v.end()) { /* found */ }
- 查找特定值:
修改所有元素:
- 使用
std::transform
进行批量修改:
std::transform(v.begin(), v.end(), v.begin(), [](int x) { return x * 2; });
- 使用
交换两个 vector:
v1.swap(v2);
这些技巧涵盖了各类常见操作,可以帮助你更有效地处理 C++ 中的 vector
。使用这些方法时要注意 vector
会自动管理内存,但在频繁的插入删除操作上,相对于 list
可能性能不是最佳的选择。