前言
在学习了 vector 类的基本使用的前提下,本文将重点分析 vector 类的常用接口及其应用实现。
一、vector 成员变量
vector 本质上是一个动态数组,通过原生指针来实现底层维护。为了使得 STL 接口调用的统一性,我们需要将原生指针重命名为迭代器。
其核心目的是:将数据结构(容器)与操作(算法)分离,并通过一种统一的接口(迭代器)将它们粘合在一起。
成员变量分析
template <class T> class vector {
public:
// 将原生指针重命名为迭代器,实现接口统一
typedef T* iterator;
typedef const T* const_iterator;
private:
iterator _start; // 指向目前使用空间的头
iterator _finish; // 指向目前使用空间的尾
iterator _end_of_storage; // 指向目前可用空间的尾
};
成员变量说明:
iterator _start:指向目前使用空间的头iterator _finish:指向目前使用空间的尾iterator _end_of_storage:指向目前可用空间的尾

二、默认成员函数
2.1 无参构造
vector 默认支持无参构造函数,此时将对象的三个成员变量初始化为空指针。
vector() :_start(nullptr), _finish(nullptr), _end_of_storage(nullptr) {}
2.2 构造函数:构造 n 个同类型的值
vector 的带参构造函数,作用是创建一个初始包含 n 个元素的 vector,并且将这些元素全部初始化为给定的 value。
函数原型: vector(size_t n, const T& value = T())
代码示例:
// 构造函数:构造出 n 个同类型的值
( n, T& value = ()) {
(n);
( i = ; i < n; i++) {
(value);
}
}





