【STL】deque容器的底层实现原理

deque 容器使用指针数组 map 管理分散的连续存储空间,迭代器包含 cur, first, last 和 node 四个指针,支持随机访问。deque 的 start 和 finish 迭代器记录了容器的边界,实现增删查改操作。" 111585756,10295332,深入理解Servlet:生命周期、工作原理及高并发处理,"['Servlet', '高并发', 'Web开发', 'Tomcat', 'Java']
摘要由CSDN通过智能技术生成

【STL】deque容器底层实现原理

存储结构

在这里插入图片描述

deque 容器存储数据的空间是由一段一段等长的连续空间构成,各段空间之间并不一定是连续的,可以位于在内存的不同区域。为了管理这些连续空间,deque 容器用指针数组 map 管理各个连续空间的首地址; map 数组中存储的都是指针,指向那些真正用来存储数据的各个连续空间。

当 deque 容器需要在头部或尾部增加存储空间时,它会申请一段新的连续空间,同时在 map 数组的开头或结尾添加指向该空间的指针,该空间就接到了 deque 容器的头部或尾部。

deque迭代器的底层实现

迭代器内部包含 4 个指针,它们各自的作用为:

  • cur:指向当前正在遍历的元素;
  • first:指向当前连续空间的首地址;
  • last:指向当前连续空间的末尾地址;
  • node:它是一个二级指针,用于指向 map 数组中存储的指向当前连续空间的指针。

由于deque各存储空间之间不连续,迭代器在遍历某个具体的连续空间时,要判断自己是否已经处于空间的边界位置。如果是,则一旦前进或者后退,就需要跳转到上一个或者下一个连续空间中。利用 cur 和 first、last 进行比较判断是否需要跳转,需要发生跳转则利

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值