1. 为什么需要自己实现一个简易版 vector?
在C++开发中,STL的vector是最常用的容器之一,但很多开发者只是停留在"会用"的层面。当我第一次尝试自己实现vector时,才发现真正理解一个容器的内部机制和设计哲学,远比单纯调用API有价值得多。
自己动手实现vector至少有三大好处:
- 深入理解动态数组的内存管理机制
- 掌握模板编程的实际应用场景
- 学习STL设计中的异常安全保证
2. 基础架构设计
2.1 类模板定义
我们从最基本的类模板开始:
cpp复制template <typename T>
class Vector {
public:
// 类型别名
using value_type = T;
using pointer = T*;
using reference = T&;
using size_type = size_t;
// 构造函数
Vector() = default;
explicit Vector(size_type n);
Vector(size_type n, const T& val);
// 析构函数
~Vector();
// 容量相关
size_type size() const;
size_type capacity() const;
bool empty() const;
// 元素访问
reference operator[](size_type pos);
const reference operator[](size_type pos) const;
reference at(size_type pos);
// 修改操作
void push_back(const T& val);
void pop_back();
void clear();
private:
T* m_data = nullptr; // 数据存储指针
size_type m_size = 0; // 当前元素数量
siz
