1. vector的基本概念与特性
vector是C++标准模板库(STL)中最常用的序列式容器之一,它本质上是一个动态数组,能够自动管理内存并在运行时根据需要动态调整大小。与普通数组相比,vector提供了更灵活的内存管理和更丰富的操作接口。
vector的核心特性包括:
- 动态扩容:当元素数量超过当前容量时,vector会自动分配更大的内存空间(通常是当前容量的2倍)
- 随机访问:支持通过下标运算符[]快速访问任意位置的元素,时间复杂度为O(1)
- 连续存储:所有元素在内存中是连续存储的,这带来了良好的缓存局部性
- 类型安全:作为模板类,vector可以存储任意类型的元素,同时保证类型安全
注意:虽然vector提供了类似数组的随机访问能力,但在中间位置插入/删除元素的效率较低(O(n)),这类操作更适合使用list等链表结构
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. vector的底层实现原理
2.1 内存管理机制
vector通过三个指针来管理其内存空间:
_start:指向内存块的首元素_finish:指向最后一个元素的下一个位置_end_of_storage:指向内存块的末尾
这种设计使得vector能够高效地跟踪当前元素数量(size)和总容量(capacity):
- size = _finish - _start
- capacity = _end_of_storage - _start
当插入新元素导致size == capacity时,vector会执行扩容操作:
- 分配新的更大的内存块(通常是原容量的2倍)
- 将原有元素拷贝到新内存
- 释放旧内存
- 更新三个指针的位置
2.2 迭代器实现
vector的迭代器本质上是原生指针的封装:
cpp复制typedef T* iterator;
typedef const T* const_iterator;
这种设计使得vector的迭代器支持随机访问,并能够与STL算法完美配合。
3. vector的核心接口实现
3.1 构造函数与析构函数
vector提供了多种构造函数以适应不同场景:
cpp复制// 默认构造
vector() = default;
// 拷贝构造
vector(const
