STL源码剖析之Deque容器【2013.11.25】

欢迎加入我们的QQ群,无论你是否工作,学生,只要有c / vc / c++ 编程经验,就来吧!158427611 【IT】C/C++/STL/Linux/W


 STL源码剖析之Deque容器【2013.11.25】


deque是说起来和上一篇的List有点像,他是一个双向队列,但是不循环。

(队列:在一个顺序空间内 实现一种 先进后出 的属性)



deque的定义:


SGI STL中 deque是一个 伪连续的空间,是由一段一段的连续空间连接的,当保存的数据超出现有空间的时候,就再配置一段空间。

从外部看,deque是一个连续的容器。所以我说是伪连续空间。

因而deque的内部有一个指针空间,用来存储每一段的指向指针,就是上面的 map 成员变量。(不是map容器噢)

map的每个元素就是指向一段连续空间。

 map_size 大小表示 有多少段空间。

同样map也是有大小的,map满了的时候,就重新配置更大 的map并把原map拷贝过去。

插入的时候判断是否需要配置新空间,由deque的迭代器来判断。看代码:


cur last来决定是否需要配置新空间。否则都是用现有空间。

当需要取下一个段空间的时候,就由node返回map,取map的下一个指针,即是指向了下一个逻辑节点。指向上一个也是同理!

同时有定义看出,deque的段空间的大小是固定了的,有成员函数buffer_size 可以知道。




【1】deque是一个双端队列,两端可以入队出队的。

【2】由于deque的分段管理,这个可以说 有点 继承了 vector的线性连续空间的优点,提高定位效率(虽然deque没有提供这样的接口方法),也继承了List的优点,不会过多配置备用空间,造成一些空间浪费(也可以算Vector的缺点)



欢迎加入我们的QQ群,无论你是否工作,学生,只要有c / vc / c++ 编程经验,就来吧!158427611 【IT】C/C++/STL/Linux/W

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值