前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++初阶学习第九弹——探索STL奥秘(四)——vector的深层挖掘和模拟实现

C++初阶学习第九弹——探索STL奥秘(四)——vector的深层挖掘和模拟实现

作者头像
GG Bond1
发布2024-06-14 21:20:31
570
发布2024-06-14 21:20:31
举报
文章被收录于专栏:C/C++葵花宝典C/C++葵花宝典

前言:

在前面我们已经学习了string的使用及其模拟实现,并且我们也已经学习了vector的使用,今天我们就来学习一下vector的模拟实现


一、 vector的基本成员变量

我们之前已经学习了vector的使用,所以也基本了解了其机制,现在我们来看一下vector工作的基本机制

从图中我们可以看出,vector的操作机制实际上是通过三个指针来实现的:

_start、_finish、_endOfStorage

所以vector的基本成员变量为:

因为vector的本质上与顺序表很相似,只是存储的数据上变的更加多元化了,所以我们可以对基本成员做一些调整,将其改成迭代器相关的,方便我们后面写类成员函数

改进后:

接下来,我们就开始进入今天的正题,模拟vector的五大步骤:

1、构造和销毁 2、迭代器相关 3、容量相关 4、元素访问 5、vector的修改操作

二、 vector的逐步实现

1、构造和销毁

构造的方法主要有以下五种:

· 默认构造 · 构造同时将前n个初始化 · 迭代器构造法 · 拷贝构造 · operator=运算符重载

2、迭代器相关
3、容量相关

容量相关的最重要的就是扩容,就是reserve函数,同时我们也需要注意一下resize函数,这两者各自的特点需要记清,这些前面文章有讲到,我们这里只强调一下:

resize函数即可以扩容,也可以缩容,同时还可以初始化,这个函数创造性挺大

4、元素访问

元素访问关键就是运算符重载(operator[ ]),由于我们定义的类成员变量是以指针形式的,所以我们其实很容易实现这个重载

5、vector的修改操作

vector的修改操作最关键的就是insert函数和erase函数,就是在任意位置插入和删除,尾插尾删可以直接调用这两个函数来实现,但这两个函数细节也挺多,具体实现细节看下面实现过程

三、总结

上面的就是vector的模拟实现的全部代码段,这些还不是vector的全部内容,还有vector复制等几个细节我们还没讲,这个感兴趣的可以关注一下,将在下一篇讲解这些细小知识点

感谢各位大佬观看,创作不易,还请各位大佬点赞支持!!!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-05-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、 vector的基本成员变量
  • 二、 vector的逐步实现
    • 1、构造和销毁
      • 2、迭代器相关
        • 3、容量相关
          • 4、元素访问
            • 5、vector的修改操作
            • 三、总结
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档