简述deque容器的插入删除原理

19 篇文章 0 订阅
  • 双端队列deque是一种双向开口的存储空间分段连续的数据结构,每段数据空间内部是连续的,而每段数据空间则不一定连续。
  • 初始状态下,双端队列中只有一段数据空间,中控器的第一个指针指向这段空间。在向deque插入和删除元素的过程中,会根据数据空间的状态,动态分配和释放空间,数据空间段的数量会发生变化。
  • 如果无法像deque的队首插入更多的元素,表明首段数据空间已满,deque会申请一段新的数据空间,这段新的数据空间会作为首段数据空间,原有的首段数据空间作为第二段数据空间。
  • 如果无法向deque的队尾插入更多的元素,表明末端数据空间已满,deque会申请一段新的数据空间,这段新的数据空间会作为末端数据空间,原有的末端数据空间作为倒数第二段数据空间。
  • 如果从队首删除元素后首段数据空间为空,deque会将首段数据空间释放,并将原有的第二段数据空间作为首段数据空间。
  • 如果从队尾删除元素后末段数据空间为空,deque会将末段数据空间释放,并将原有的倒数第二段数据空间作为末段数据空间。
  • 此外,deque中还有两组迭代器,分别关联首段数据空间和末段数据空间,用于在队首和队尾进行插入删除操作。
  • 队首迭代器中有三个指针:first指针指向队首数据空间的起始位置;cur指针指向队首数据空间的第一个有效元素;last指针指向队首数据空间的结束位置。由于在插入删除过程中,队首数据空间的前若干个元素可能为空,因此第一个有效元素可能位于队首数据空间中的任何位置。
  • 队尾迭代器中有三个指针:first指针指向队尾数据空间的起始位置;cur指针指向队尾数据空间的最后一个有效元素;last指针指向队尾数据空间的结束位置。由于在插入删除过程中,队尾数据空间的最后几个元素可能为空,因此最后一个有效元素可能位于队尾数据空间中的任何位置。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值