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 的特性,可以显著提升代码的简洁性和运行效率。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐