11.C++ STL之deque

一、容器deque结构

是双向开口的空间。
而vector是单向的,已知vector的内存扩充是二倍成长。那么deque怎么扩充呢?

双向扩充!

deque的方式是使用分段,然后将各段串接在一起。
在这里插入图片描述

map是个vector,其中每个元素是指针,指向每个分段,以将每个分段串接在一起。因此map是个T**类型

如果队列末尾满了,需要再分配一个buffer,并且在map后面中存入指向他的指针。

deque的迭代器iterator是一个class,内部有四个成员:cur,first,last,node

  • node:指向控制中心map,迭代器可以知道控制中心在哪,当迭代器需要++或者–的时候,就能通过它回到控制中心以跳到另一个分段。
  • last:某个buffer的尾(标识缓冲区的边界)
  • first:某个buffer的头(标识缓冲区的边界)
  • cur:迭代器的任务是指向某一个元素,cur是在某个缓冲区中迭代器指向的元素。

只有cur才会变动。
当跳到下一个缓冲区buffer,这四个成员都会发生变动。

  • start:begin(),返回这个成员
  • finish:end(),返回这个成员
template <class T,class Ref,class Ptr,size_t BufSize
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值