【c 中vector的用法详解】在 C++ 中,`vector` 是一个非常常用且强大的容器,它提供了动态数组的功能,能够根据需要自动扩展或缩小。与传统的数组相比,`vector` 更加灵活、安全,并且提供了丰富的操作方法。本文将对 `vector` 的基本用法进行详细总结,并通过表格形式展示其常用操作。
一、vector 简介
`vector` 是 C++ 标准库中 `std::vector` 类模板的一种实现,属于 `
二、vector 常用操作总结
| 操作 | 说明 | 示例代码 |
| `include | 引入 vector 头文件 | `include |
| `std::vector | 定义一个 vector | `std::vector |
| `vec.push_back(x);` | 将元素 x 添加到 vector 尾部 | `vec.push_back(5);` |
| `vec.pop_back();` | 删除 vector 最后一个元素 | `vec.pop_back();` |
| `vec.size();` | 返回 vector 当前元素个数 | `int n = vec.size();` |
| `vec.empty();` | 判断 vector 是否为空 | `if (vec.empty()) ...` |
| `vec.clear();` | 清空 vector 所有元素 | `vec.clear();` |
| `vec.capacity();` | 返回 vector 当前容量(即能容纳的元素数量) | `int cap = vec.capacity();` |
| `vec.resize(n);` | 调整 vector 大小为 n | `vec.resize(10);` |
| `vec.reserve(n);` | 预分配内存,提高性能 | `vec.reserve(100);` |
| `vec.at(i);` | 访问第 i 个元素,越界会抛出异常 | `int val = vec.at(2);` |
| `vec[i];` | 访问第 i 个元素,不检查越界 | `int val = vec[2];` |
| `vec.begin();` | 返回指向第一个元素的迭代器 | `auto it = vec.begin();` |
| `vec.end();` | 返回指向最后一个元素之后的迭代器 | `auto it = vec.end();` |
| `vec.insert(pos, value);` | 在 pos 位置插入一个元素 | `vec.insert(vec.begin(), 10);` |
| `vec.erase(pos);` | 删除 pos 位置的元素 | `vec.erase(vec.begin());` |
| `vec.erase(start, end);` | 删除 [start, end) 区间内的所有元素 | `vec.erase(vec.begin(), vec.end() - 1);` |
三、vector 的初始化方式
| 初始化方式 | 说明 | 示例 |
| 默认构造 | 创建一个空 vector | `std::vector |
| 指定大小 | 创建一个包含 n 个默认值的 vector | `std::vector |
| 指定大小和值 | 创建一个包含 n 个值为 x 的 vector | `std::vector |
| 使用数组初始化 | 从数组中复制元素 | `int arr[] = {1, 2, 3}; std::vector |
| 使用另一个 vector 初始化 | 从另一个 vector 复制 | `std::vector |
四、vector 的性能特点
- 动态扩容:当 `vector` 元素数量超过当前容量时,会自动分配更大的内存并复制数据。
- 随机访问快:支持通过下标快速访问元素。
- 插入/删除效率低:在中间或头部插入/删除元素会导致大量数据移动,影响性能。
五、使用建议
- 如果需要频繁在中间或头部插入/删除元素,考虑使用 `list` 或 `deque`。
- 若需优化内存使用,可提前调用 `reserve()` 方法预分配空间。
- 使用 `at()` 方法访问元素更安全,避免越界错误。
六、总结
`vector` 是 C++ 中非常实用的数据结构,具有灵活性和高效性。掌握其基本用法和常见操作,有助于编写更高效、安全的程序。通过本篇总结,希望你对 `vector` 的使用有了更清晰的认识。


