C++动态数组vector完全指南,君正T32开发笔记之AOV实例介绍。
·
vector 的基本概念
vector 是 C++ 标准模板库(STL)中的动态数组容器,能够高效地存储和管理元素序列。其核心优势在于自动扩容机制,支持随机访问,并提供丰富的成员函数。
vector 的底层实现通常基于连续内存空间,类似于数组,但动态调整容量的特性使其更加灵活。与静态数组相比,vector 在运行时可以根据需求自动扩展或收缩,无需手动管理内存。
vector 的初始化与常用操作
vector 支持多种初始化方式,包括默认构造、指定大小和初始值、列表初始化等。
#include <vector>
using namespace std;
vector<int> v1; // 默认构造,空vector
vector<int> v2(5, 10); // 包含5个元素,初始值为10
vector<int> v3 = {1, 2, 3}; // 列表初始化
常用操作包括:
push_back():在尾部插入元素。pop_back():删除尾部元素。size():返回当前元素数量。empty():判断是否为空。clear():清空所有元素。
vector 的迭代器与遍历
vector 支持迭代器遍历,提供随机访问能力。迭代器类型包括 begin()、end() 以及反向迭代器 rbegin()、rend()。
vector<int> v = {10, 20, 30};
for (auto it = v.begin(); it != v.end(); ++it) {
cout << *it << " ";
}
范围 for 循环(C++11 起)简化了遍历操作:
for (int num : v) {
cout << num << " ";
}
vector 的内存管理与性能优化
vector 的内存增长策略通常以 2 倍或 1.5 倍扩容,避免频繁重新分配。用户可通过 reserve() 预分配内存,减少扩容开销。
vector<int> v;
v.reserve(100); // 预分配100个元素的空间
shrink_to_fit() 可释放多余内存,但并非强制操作。
vector 的高级功能
- 元素访问:
at()提供边界检查,operator[]效率更高但无检查。 - 插入与删除:
insert()和erase()支持指定位置操作,但需注意迭代器失效问题。 - 比较操作:支持
==、!=、<等运算符,按字典序比较。
典型应用场景
vector 适用于需要动态调整大小的序列存储场景,例如:
- 数据集合的动态管理。
- 替代传统数组,提升代码安全性。
- 作为其他数据结构(如邻接表)的基础组件。
通过合理使用 vector 的特性,可以显著提升代码的简洁性和运行效率。
更多推荐

所有评论(0)