vector是C++ STL中动态数组容器,需包含头文件,支持自动内存管理与动态增删元素。可定义为空、指定大小、初值或列表初始化,还能拷贝构造。常用操作包括push_back、pop_back、size、empty、front、back、at、insert、erase等,支持下标访问与迭代器遍历,推荐使用范围for循环。内部连续存储,容量不足时自动扩容,可用reserve预分配空间以提升性能,shrink_to_fit可缩减容量。掌握vector操作有助于提高编程效率与程序稳定性。

vector 是 C++ 标准模板库(STL)中非常重要的容器之一,它提供了动态数组的功能,能够自动管理内存,支持在运行时动态添加或删除元素。相比普通数组,vector 更加灵活、安全,是日常编程中使用频率极高的数据结构。
1. vector 的基本定义与初始化
要使用 vector,需要包含头文件 #include
-
vector
v; // 创建一个空的整型 vector -
vector
v(5); // 创建包含 5 个元素的 vector,初始值为 0 -
vector
v(5, 10); // 创建 5 个元素,每个值都是 10 -
vector
v = {1, 2, 3, 4, 5}; // 列表初始化(C++11 起) -
vector
v2(v); // 拷贝构造,v2 是 v 的副本
2. 常用操作与成员函数
vector 提供了丰富的成员函数来操作数据,以下是一些最常用的:
- v.push_back(x); // 在末尾添加一个元素 x
- v.pop_back(); // 删除最后一个元素(不返回值)
- v.size(); // 返回当前元素个数
- v.empty(); // 判断是否为空,返回 bool
- v[i]; // 随机访问第 i 个元素(不检查越界)
- v.at(i); // 访问第 i 个元素,会做越界检查,越界抛出异常
- v.front(); // 返回第一个元素
- v.back(); // 返回最后一个元素
- v.clear(); // 清空所有元素
- v.insert(it, x); // 在迭代器 it 位置插入元素 x
- v.erase(it); // 删除迭代器 it 所指元素
- v.swap(v2); // 与另一个 vector 交换内容
示例代码:
立即学习“C++免费学习笔记(深入)”;
#include#include using namespace std; int main() { vector v; v.push_back(10); v.push_back(20); v.push_back(30); cout << "大小: " << v.size() << endl; cout << "第一个元素: " << v.front() << endl; cout << "最后一个元素: " << v.back() << endl; for (int i = 0; i < v.size(); ++i) { cout << v[i] << " "; } cout << endl; v.pop_back(); cout << "删除最后一个后大小: " << v.size() << endl; return 0; }
3. 迭代器的使用
vector 支持使用迭代器遍历元素,这是 STL 容器的通用方式。
- begin():指向第一个元素的迭代器
- end():指向最后一个元素的下一个位置
- rbegin() 和 rend():反向迭代器
示例:
for (auto it = v.begin(); it != v.end(); ++it) {
cout << *it << " ";
}
或使用范围 for 循环(推荐):
for (int x : v) {
cout << x << " ";
}
4. 动态扩容机制
vector 内部使用连续内存存储元素,当容量不足时会自动重新分配更大的空间,并将原数据复制过去。虽然这个过程对用户透明,但频繁插入可能导致性能问题。
- v.capacity(); // 查看当前容量(可容纳多少元素而不需重新分配)
- v.reserve(n); // 预分配至少 n 个元素的空间,避免频繁扩容
- v.shrink_to_fit(); // 尝试减少容量以匹配实际大小(C++11)
建议在已知元素数量时提前 reserve,提升效率。
基本上就这些。掌握 vector 的常用操作能极大提高编码效率和程序稳定性。










