【c中vector的用法详解】在C++中,`vector` 是一个非常常用的容器类,属于标准模板库(STL)的一部分。它提供了一个动态数组的功能,可以自动扩展或缩小大小,非常适合需要频繁添加或删除元素的场景。以下是对 `vector` 的详细用法总结。
一、基本概念
| 概念 | 说明 |
| `vector` | C++ STL 中的动态数组容器,支持随机访问和动态扩容 |
| 头文件 | ` |
| 动态数组 | 可以根据需要自动调整大小,无需手动管理内存 |
二、常用操作与方法
| 操作 | 语法 | 说明 |
| 定义 | `vector | 声明一个整型向量 |
| 初始化 | `vector | 使用初始化列表创建向量 |
| 添加元素 | `v.push_back(x);` | 在末尾添加一个元素 |
| 插入元素 | `v.insert(pos, x);` | 在指定位置插入一个元素 |
| 删除元素 | `v.pop_back();` | 删除最后一个元素 |
| 删除指定位置 | `v.erase(pos);` | 删除指定位置的元素 |
| 访问元素 | `v[i];` | 通过索引访问元素 |
| 获取大小 | `v.size();` | 返回当前元素个数 |
| 判断是否为空 | `v.empty();` | 返回 `true` 如果向量为空 |
| 清空向量 | `v.clear();` | 清除所有元素 |
| 预分配空间 | `v.reserve(n);` | 预分配至少 n 个元素的空间 |
| 调整容量 | `v.resize(n);` | 调整向量大小为 n |
三、遍历方式
| 方法 | 语法 | 说明 |
| 下标遍历 | `for (int i=0; i < v.size(); i++)` | 通过索引逐个访问元素 |
| 迭代器遍历 | `for (auto it = v.begin(); it != v.end(); ++it)` | 使用迭代器遍历 |
| 范围 for 循环 | `for (int x : v)` | 简洁的遍历方式(C++11 及以上) |
四、常见错误与注意事项
| 问题 | 说明 |
| 越界访问 | 不要使用 `v.at(i)` 以外的方式访问超出范围的元素,可能导致未定义行为 |
| 内存泄漏 | 使用 `vector` 时不需要手动释放内存,系统会自动处理 |
| 性能问题 | 频繁调用 `push_back` 可能导致多次内存重新分配,可使用 `reserve` 提前分配空间 |
| 类型不匹配 | 向量中的元素类型必须一致,不能混用不同类型的元素 |
五、示例代码
```cpp
include
include
int main() {
std::vector
// 添加元素
v.push_back(4);
// 插入元素
v.insert(v.begin() + 1, 5);
// 遍历输出
for (int num : v) {
std::cout << num << " ";
}
return 0;
}
```
六、总结
`vector` 是 C++ 中功能强大且灵活的容器之一,适用于大多数需要动态数组的场景。掌握其基本操作和使用技巧,可以大幅提升程序的效率和可维护性。建议在实际开发中合理使用 `reserve` 和 `resize` 来优化性能,并注意避免越界访问等常见错误。


