layout: post

title: 侯捷STL学习(八)

date: 2017-07-19

tag: 侯捷STL

第十八节 深度探索deque上

  • duque内存结构
  • 分段连续,用户看起来是连续的
  • 迭代器为了维持连续的状态,每次++,--都需要判断当前buffer是否用完,若用完则需要通过控制中心跳到下一个buffer

  • 控制中心的map是指向vector的,以后也是2倍增长

  • deque iterator迭代器实现,关键有指向map的指针

  • deque<T>::insert讲解
  • 很好体现deque的灵活性

  • 要判断插入位置离首尾那个近一些,插入操作涉及元素搬移

第十九节 深度探索deque下

  • deque如何实现连续空间
  • 主要是迭代器运算符重载实现

  • 用后++(i++)调用前++(++i)
前++(++i)其中i作为对象,self& operator++(){}返回引用,这样可以进行两次前++
后++ (i++) self operator++(int){},阻止两次后++
++++i对的++(++i);不允许两次后++ (i++)++

  • G4.9实现
  • 控制中心实际为vector,当不足的时候,成两倍的增长,此时copy数据到新vector的中心位置,这样方便两边数据的增长

queue,stack的实现

  • 底层用deque实现,实际操作调用deque的函数

  • 有时不把queue,stack当作容器



  • stack,queue都不允许遍历,不提供iterator

  • stack,queue也可以选择list做底层实现,默认选择duque做底层

  • queue不可选择vector做底层实现,stack也可以用vector做底层实现

  • 编译器不会对容器做全面的检查,当没有调用错误的函数时候,编译器不会报错!

最新文章

  1. js实现输入框数量加减【转】
  2. [C#] 使用NPOI将Datatable保存到Excel
  3. linux 内核 RCU机制详解
  4. C# Windows service 开发笔录
  5. UICollectionViewController用法
  6. haskell读写文件相关(含二进制)
  7. 转载KMP
  8. 关于in与exists的效率讨论
  9. c# DirectoryInfo类 详解
  10. perl指针引用
  11. iOS 时间戳的问题
  12. Mysq基础
  13. webpack深入场景——开发环境和生产环境配置
  14. 优先级队列用法详解(priority_queue)
  15. 问题:强制关闭Redis快照导致不能持久化
  16. js正则表达式——数字校验
  17. Python——Django-模板
  18. ubuntu 18.04/18.10解决create-react-app:command not found问题
  19. Guava 2:Basic utilities基本工具
  20. 我自己的sublime3环境

热门文章

  1. Centos6.5使用yum安装软件的时候 Another app is currently holding the yum lock; waiting for it to exit...
  2. Struts2的Action中访问servletAPI方式
  3. spark学习3(sqoop1.4.6安装)
  4. SpringMVC中使用ModelAndView遇到的问题
  5. Java中各种集合特点总结
  6. dp3--codevs2598 编辑距离问题
  7. Python-正则表达式及实战小例子
  8. LeetCode OJ:Unique Paths II(唯一路径II)
  9. 利用HTML5开发Android笔记(下篇)
  10. VueJs路由跳转——vue-router的使用