前言:
在前面我们已经学习了string的使用及其模拟实现,并且我们也已经学习了vector的使用,今天我们就来学习一下vector的模拟实现
我们之前已经学习了vector的使用,所以也基本了解了其机制,现在我们来看一下vector工作的基本机制
从图中我们可以看出,vector的操作机制实际上是通过三个指针来实现的:
_start、_finish、_endOfStorage
所以vector的基本成员变量为:
因为vector的本质上与顺序表很相似,只是存储的数据上变的更加多元化了,所以我们可以对基本成员做一些调整,将其改成迭代器相关的,方便我们后面写类成员函数
改进后:
接下来,我们就开始进入今天的正题,模拟vector的五大步骤:
1、构造和销毁 2、迭代器相关 3、容量相关 4、元素访问 5、vector的修改操作
构造的方法主要有以下五种:
· 默认构造 · 构造同时将前n个初始化 · 迭代器构造法 · 拷贝构造 · operator=运算符重载
容量相关的最重要的就是扩容,就是reserve函数,同时我们也需要注意一下resize函数,这两者各自的特点需要记清,这些前面文章有讲到,我们这里只强调一下:
resize函数即可以扩容,也可以缩容,同时还可以初始化,这个函数创造性挺大
元素访问关键就是运算符重载(operator[ ]),由于我们定义的类成员变量是以指针形式的,所以我们其实很容易实现这个重载
vector的修改操作最关键的就是insert函数和erase函数,就是在任意位置插入和删除,尾插尾删可以直接调用这两个函数来实现,但这两个函数细节也挺多,具体实现细节看下面实现过程
上面的就是vector的模拟实现的全部代码段,这些还不是vector的全部内容,还有vector复制等几个细节我们还没讲,这个感兴趣的可以关注一下,将在下一篇讲解这些细小知识点
感谢各位大佬观看,创作不易,还请各位大佬点赞支持!!!