C++ std::vector 完全指南:动态数组、迭代器、修改器与实战示例
什么是 C++ vector?
C++ vector 是随元素增删自动调整大小的动态数组。元素连续存储,支持快速索引访问和迭代器遍历。
尾部插入为均摊常数时间。删除尾部元素也是常数时间,而在头部或中间插入/删除需移动元素,时间复杂度为线性。
何时使用 vector?
- 需要随时间变化的可调整大小容器。
- 编译期未知集合最终大小。
如何初始化 vector
std::vector<data-type> name (size, value); // size 和 value 可选
data-type指定元素类型。name为 vector 标识符。- 可选
size预留空间;value初始化所有元素。
迭代器
迭代器提供指针式接口访问 vector 元素。常用迭代器函数:
begin()– 指向首元素。end()– 指向尾后位置。cbegin()– 指向首元素的只读迭代器。cend()– 指向尾后位置的只读迭代器。
修改器
修改器改变 vector 内容。关键函数:
push_back()– 尾部追加元素。insert()– 指定位置插入。pop_back()– 移除尾部元素。erase()– 删除指定范围元素。clear()– 清空所有元素。
示例 1:基础迭代
#include <iostream> #include <vector> int main() { std::vector<int> nums; for (int a = 1; a <= 5; ++a) { nums.push_back(a); } std::cout << "Output from begin and end: "; for (auto it = nums.begin(); it != nums.end(); ++it) { std::cout << *it << ' '; } std::cout << "\nOutput from cbegin and cend: "; for (auto it = nums.cbegin(); it != nums.cend(); ++it) { std::cout << *it << ' '; } return 0; }
输出:

示例 2:高级修改器
#include <iostream> #include <vector> int main() { std::vector<int> nums; nums.assign(5, 1); // 五个元素全初始化为 1 std::cout << "Vector contents: "; for (size_t i = 0; i < nums.size(); ++i) { std::cout << nums[i] << ' '; } nums.push_back(2); std::cout << "\nLast element: " << nums.back(); nums.pop_back(); std::cout << "\nVector contents: "; for (int a : nums) std::cout << a << ' '; nums.insert(nums.begin(), 7); std::cout << "\nFirst element: " << nums.front(); nums.clear(); std::cout << "\nSize after clear(): " << nums.size(); return 0; }
输出:

容量相关函数
确定和操纵 vector 存储特性的函数:
size()– 当前元素数量。max_size()– 理论最大元素数。capacity()– 已分配存储容量。resize(n)– 将元素数量改为n,按需增删。empty()– vector 为空返回 true。
示例 3:容量探索
#include <iostream> #include <vector> int main() { std::vector<int> vector1; for (int x = 1; x <= 10; ++x) { vector1.push_back(x); } std::cout << "Vector size: " << vector1.size() << std::endl; std::cout << "Vector capacity: " << vector1.capacity() << std::endl; std::cout << "Maximum size of vector: " << vector1.max_size() << std::endl; vector1.resize(5); std::cout << "Vector size after resizing: " << vector1.size() << std::endl; if (!vector1.empty()) std::cout << "Vector is not empty" << std::endl; else std::cout << "Vector is empty" << std::endl; return 0; }
输出:

核心要点
- C++ vector 是高效、自动调整大小的容器。
- 元素连续存储,提供快速随机访问。
- 尾部插入/删除为均摊常数时间;头部/中间为线性时间。
- vector 适合数据大小不可预测或频繁变化的场景。
C语言
- 精通C标准库函数:实战指南
- C++ 运算符全解析:类型、示例与示例程序
- C++ do-while 循环详解:语法、实战示例与嵌套循环
- 掌握 C++ switch-case:语法、用法与实战示例
- C++ 动态数组分配实战指南:new/delete、初始化、扩容与内存管理
- C++ 指针精通:核心概念、代码示例与实战应用
- C++ 运算符重载实战指南:语法、方法、限制与代码示例
- C++ 结构体详解:定义、初始化、指针、函数参数与局限性
- C++ std::map 完全指南:键值对容器、核心操作与实战代码
- 掌握 C++ std::list:语法、函数与实战示例
- C++ 函数详解:从声明到调用的实战指南
- C++ Struct 与 Class 核心差异、语法及最佳实践