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

马肤
摘要:本篇文章深入探讨了C++ STL中的vector容器,对其进行了深层挖掘和模拟实现。文章详细解析了vector的内部机制,包括其动态数组的实现方式、内存管理以及性能优化等方面。通过模拟实现,让读者更好地理解vector的工作原理,从而在日常编程中更加熟练地运用这一强大的容器。本文是C++初阶学习的第九弹,对于STL的奥秘进行了进一步的揭示。

字符串(上):C++初阶学习第六弹——探索STL奥秘(一)——标准库中的string类-CSDN博客

字符串(下):C++初阶学习第七弹——探索STL奥秘(二)——string的模拟实现-CSDN博客

矢量(上):C++初阶学习第八弹——探索STL奥秘(三)——深入剖析vector的使用-CSDN博客

前言:

在前面,我们已经学习了string的使用及其模拟实现,并且也学习了vector的使用,我们将深入学习vector的模拟实现。

目录:

vector的基本成员变量

vector的逐步实现

1、构造和销毁

2、迭代器相关

3、容量相关

4、元素访问

5、vector的修改操作

一、vector的基本成员变量:

我们之前已经学习了vector的使用,因此对其机制已有基本了解,我们来看一下vector工作的基本机制。

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

从图中可以看出,vector的操作机制实际上是通过三个指针来实现的:_start、_finish、_endOfStorage,vector的基本成员变量为:

template<typename T>
class vector {
private:
    T* _start;      //指向有效数据的头
    T* _finish;     //指向有效数据的尾
    T* _endOfStorage;    //指向容量的尾
};

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

二、vector的逐步实现:

构造和销毁:

构造的方法主要有五种:默认构造、构造同时将前n个初始化、迭代器构造法、拷贝构造、operator=运算符重载。

迭代器相关:

迭代器是找到头尾的主要方式,相关函数为:begin()、end()、cbegin()、cend()。

容量相关:

容量相关的最重要的是扩容,即reserve函数,我们也需要关注resize函数,它既可以扩容,也可以缩容,同时还可以初始化。

元素访问:

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

vector的修改操作:

vector的修改操作最关键的是insert函数和erase函数,即在任意位置插入和删除,尾插尾删可以直接调用这两个函数来实现。

三、

上面的代码段是vector的模拟实现的全部内容,除此之外,还有vector复制等细节没有详细讲解,感兴趣的可以关注下一篇文章,我们将讲解这些细小知识点,感谢各位的阅读和支持!如果您觉得这篇文章对您有帮助,请点赞关注! 😊 感谢您的阅读!如果您有任何问题或建议,请随时与我联系。


0
收藏0
文章版权声明:除非注明,否则均为VPS857原创文章,转载或复制请以超链接形式并注明出处。

相关阅读

  • 【研发日记】Matlab/Simulink自动生成代码(二)——五种选择结构实现方法,Matlab/Simulink自动生成代码的五种选择结构实现方法(二),Matlab/Simulink自动生成代码的五种选择结构实现方法详解(二)
  • 超级好用的C++实用库之跨平台实用方法,跨平台实用方法的C++实用库超好用指南,C++跨平台实用库使用指南,超好用实用方法集合,C++跨平台实用库超好用指南,方法与技巧集合
  • 【动态规划】斐波那契数列模型(C++),斐波那契数列模型(C++实现与动态规划解析),斐波那契数列模型解析与C++实现(动态规划)
  • 【C++】,string类底层的模拟实现,C++中string类的模拟底层实现探究
  • uniapp 小程序实现微信授权登录(前端和后端),Uniapp小程序实现微信授权登录全流程(前端后端全攻略),Uniapp小程序微信授权登录全流程攻略,前端后端全指南
  • Vue脚手架的安装(保姆级教程),Vue脚手架保姆级安装教程,Vue脚手架保姆级安装指南,Vue脚手架保姆级安装指南,从零开始教你如何安装Vue脚手架
  • 如何在树莓派 Raspberry Pi中本地部署一个web站点并实现无公网IP远程访问,树莓派上本地部署Web站点及无公网IP远程访问指南,树莓派部署Web站点及无公网IP远程访问指南,本地部署与远程访问实践,树莓派部署Web站点及无公网IP远程访问实践指南,树莓派部署Web站点及无公网IP远程访问实践指南,本地部署与远程访问详解,树莓派部署Web站点及无公网IP远程访问实践详解,本地部署与远程访问指南,树莓派部署Web站点及无公网IP远程访问实践详解,本地部署与远程访问指南。
  • vue2技术栈实现AI问答机器人功能(流式与非流式两种接口方法),Vue2技术栈实现AI问答机器人功能,流式与非流式接口方法探究,Vue2技术栈实现AI问答机器人功能,流式与非流式接口方法详解
  • 发表评论

    快捷回复:表情:
    评论列表 (暂无评论,0人围观)

    还没有评论,来说两句吧...

    目录[+]

    取消
    微信二维码
    微信二维码
    支付宝二维码