C++ std::vector
什么是 std::vector
?
std::vector
是 C++ 标准库中的一个动态数组容器。它像一个“智能数组”,可以自动管理内存,自由增删元素,无需手动计算大小。
#include <vector> // 必须包含头文件
1. 创建 vector
std::vector<int> v; // 空的 int 向量
std::vector<int> v(5); // 5个元素,初始为0
std::vector<int> v(5, 10); // 5个元素,都为10
std::vector<int> v = {1,2,3}; // 初始化列表
2. 添加元素
v.push_back(4); // 在末尾添加 4
v.push_back(5); // 现在 v = {1,2,3,4,5}
3. 访问元素
cout << v[0]; // 第一个元素(不检查越界)
cout << v.at(0); // 第一个元素(会检查越界)
cout << v.front(); // 第一个元素
cout << v.back(); // 最后一个元素
4. 删除元素
v.pop_back(); // 删除最后一个元素
5. 获取大小
v.size(); // 当前元素个数
v.empty(); // 是否为空(true/false)
常用操作
操作 | 代码 | 说明 |
---|---|---|
添加 | v.push_back(x) | 尾部添加 |
删除 | v.pop_back() | 删除尾部 |
清空 | v.clear() | 删除所有 |
判断空 | v.empty() | 返回 bool |
大小 | v.size() | 元素个数 |
容量 | v.capacity() | 当前容量 |
预留空间 | v.reserve(n) | 预分配内存 |
遍历 vector
的 3 种方式
方式1:下标遍历(最常用)
for (int i = 0; i < v.size(); i++) {cout << v[i] << " ";
}
方式2:范围 for 循环
for (int x : v) {cout << x << " ";
}
方式3:迭代器
for (auto it = v.begin(); it != v.end(); ++it) {cout << *it << " ";
}
vector
和数组的区别?
vector
可变长,数组固定长。
vector
自动管理内存,数组不会。
如何避免频繁扩容?
v.reserve(100); // 预先分配空间
能存哪些类型?
std::vector<int> // 整数
std::vector<string> // 字符串
std::vector<vector<int>> // 二维数组
std::vector<Person> // 自定义结构体
总结
特点 | 说明 |
---|---|
✅ 动态大小 | 自动扩容 |
✅ 安全访问 | at() 检查越界 |
✅ 高效操作 | 尾插尾删 O(1) |
✅ 易于使用 | 语法简洁 |
✅ 标准推荐 | STL 核心容器 |