代码改变世界

C++ std::vector - 详解

2025-09-16 16:16  tlnshuju  阅读(19)  评论(0)    收藏  举报

什么是 std::vector

std::vector 是 C++ 标准库中的一个动态数组容器。它像一个“智能数组”,可以自动管理内存,自由增删元素,无需手动计算大小。

#include   // 必须包含头文件

1. 创建 vector

std::vector v;           // 空的 int 向量
std::vector v(5);        // 5个元素,初始为0
std::vector v(5, 10);    // 5个元素,都为10
std::vector 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      // 整数
std::vector   // 字符串
std::vector> // 二维数组
std::vector   // 自定义结构体

 总结

特点说明
✅ 动态大小自动扩容
✅ 安全访问at() 检查越界
✅ 高效操作尾插尾删 O(1)
✅ 易于使用语法简洁
✅ 标准推荐STL 核心容器