C++ deque底层原理

这篇具有很好参考价值的文章主要介绍了C++ deque底层原理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、目的

实现双端数组

二、底层实现

双向开口的连续线性空间

三、原理图

C++ deque底层原理,C++学习,c++

四、类结构

  • class deque : protected Deque base

  • _Deque_base._Deque_impl

M_map 			指针数组
_M_map_size 	_M_map的容量
_M_start		记录 map 数组中首个连续空间的信息
_M_finish		记录 map 数组中最后一个连续空间的信息
  • _Deque_iterator
_M_cur			指向当前正在遍历的元素
_M_first		指向当前连续空间的首地址
_M_last			指向当前连续空间的末尾地址
_M_node			用于指向 map 数组中存储的指向连续空间的指针
  • _deque buf size 连续空间中能容纳元素的个数
  • _M_initialize _map
创建 map,并配置缓冲区
_M_start 和_M_finish 指向中间的位置,方便公平地往上或者向下扩展空间

五、push_back

  • 当前连续空间够不够
  • map 空间够不够

六、pop_back

  • 删除最后一个节点,如果当前连续空间没有数据了,则释放该连续空间

推荐一个零声学院项目课,个人觉得老师讲得不错,分享给大家:
零声白金学习卡(含基础架构/高性能存储/golang云原生/音视频/Linux内核)
https://xxetb.xet.tech/s/VsFMs文章来源地址https://www.toymoban.com/news/detail-684107.html

到了这里,关于C++ deque底层原理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【C++】deque的实现原理简单介绍

    前言 deque被称为双端队列,它的出现主要是为了结合 vector 和 list 的优点并减小它们的缺点,实际上 deque 确实结合了 vector 和 list 的优点减小了它们的缺点,但是它的结合也让它自己的优点没有原始的 vector 和 list 那么极致,导致 deque 变得很中庸,所以 deque 的应用场景也并没

    2024年02月01日
    浏览(44)
  • C++ STL第三篇(搞清楚deque原理和有多少用法)

    Vector容器是单向开口的连续内存空间,deque则是一种双向开口的连续线性空间。所谓的双向开口,意思是可以在头尾两端分别做元素的插入和删除操作,当然,vector容器也可以在头尾两端插入元素,但是在其头部操作效率奇差,无法被接受。 Deque容器和vector容器最大的差异,

    2024年03月17日
    浏览(34)
  • c++学习:容器stack栈+queue+map(简易输入法)+deque

    目录 stack 模板原型 头文件 模板的成员类型和成员对象和成员函数 栈类模板的容器对象 实例 queue 模板原型 头文件 模板的成员类型和成员对象和成员函数 队列类模板的容器对象 实例 map 模板原型 头文件 模板的成员类型和成员对象和成员函数 关联类模板的容器对象 实例1 实

    2024年01月23日
    浏览(44)
  • 【C++】详解多态的底层原理

    上一篇文章我们学习了多态的语法,想必大家都会有很多疑问,这篇文章,我们就来带大家看看多态是如何实现的,它底层的原理是怎样的… 需要声明的,本文中的代码及解释都是在vs2022下的x86程序中,涉及的指针都是4bytes。 如果要其他平台下,部分代码需要改动。比如:

    2024年02月16日
    浏览(54)
  • 【C++】多态的实现及其底层原理

    个人主页:🍝在肯德基吃麻辣烫 我的gitee:gitee仓库 分享一句喜欢的话:热烈的火焰,冰封在最沉默的火山深处。 本文继C++继承之后讲解C++多态。 单单从概念入手不好理解,应该深入理解多态的实现后再回过头来讲解。 现在简单举个例子:我们在购买高铁票时,往往会有成

    2024年02月14日
    浏览(50)
  • C++:多态的内容和底层原理

    本篇总结 C++ 中多态的基本内容和原理实现和一些边角内容 首先要清楚多态是什么,是用来做什么的? 多态从字面意思来讲,就是多种形态, 完成一个事情,不同的人去完成会有不同的结果和状态 ,这样的情况就叫做多态 多态是不同继承关系的类对象,在调用一个函数的时

    2024年02月08日
    浏览(33)
  • 【C++】多态的底层原理(虚函数表)

    🌏博客主页: 主页 🔖系列专栏: C++ ❤️感谢大家点赞👍收藏⭐评论✍️ 😍期待与大家一起进步! 通过观察测试我们发现b对象是8bytes,除了_b成员,还多一个__vfptr放在对象的前面(注意有些平台可能会放到对象的最后面,这个跟平台有关),对象中的这个指针我们叫做虚函

    2024年02月13日
    浏览(37)
  • 第一百二十五天学习记录:C++提高:STL-deque容器(下)(黑马教学视频)

    功能描述: 向deque容器中插入和删除数据 函数原型: 两端插入操作: 指定位置操作: 这里有个坑需要避一下,就是当重复执行d1.erase(it);后程序运行会崩溃。 崩溃的原因是在执行d1.erase(it)之后,迭代器it失效了,不能再继续使用。在C++的STL中,当执行erase操作后,如果要继续

    2024年02月13日
    浏览(45)
  • 第一百二十四天学习记录:C++提高:STL-deque容器(上)(黑马教学视频)

    功能: 双端数组,可以对头端进行插入删除操作 deque与vector区别 vector对于头部的插入删除效率低,数据量越大,效率越低 deque相对而言,对头部的插入删除速度比vector快 vector访问元素的速度会比deque快,这和两者内部实现有关 deque内部工作原理: deque内部有个中控器,维护

    2024年02月13日
    浏览(45)
  • 【C++】list的使用及底层实现原理

      本篇文章对list的使用进行了举例讲解。同时也对底层实现进行了讲解。底层的实现关键在于迭代器的实现。希望本篇文章会对你有所帮助。 文章目录 一、list的使用 1、1 list的介绍 1、2 list的使用 1、2、1 list的常规使用  1、2、2 list的sort讲解 二、list的底层实现 2、1 初构l

    2024年02月16日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包