id is hang_2

冉杰文

个人站

一直在模仿....


侯捷STL学习(六)

第十三,四节 深度探索list(上,下)

  • list Gnu2.9源代码实现
  • 注意node代码和图示的位置
  • 实现前闭后开,增加一个空白节点

  • 用的分配器alloc
  • Iterator智能指针,需要知道结点node的next指针
  • 除了array和vector,其他容器的iterator都是一个class
  • iteratorclass 实现

  • 必须做至少5个typedef,很多操作符重载
  • 前++++i其中i作为对象,self& operator++(){}返回引用,这样可以进行两次前++
  • 后++ i++ self operator++(int){},阻止两次后++
  • ++++i对的++(++i);不允许两次后++ (i++)++

  • list的迭代器解引用,不像vetor直接是数据,而是(*iter).data
  • Gnu 4.9的改善地方,下图中有说明:链表指向自己

  • G4.9类之间的关系变得复杂

第十五节 迭代器的设计原则和Iterator Traits的作用与设计

  • Iterator需要遵循的原则,必须提供5种associated types
  • 算法向iterator提问,获得一些类型type,方便处理

  • 问答式

  • Traits特性,特质
  • 算法的参数,可能是iterator或者普通指针,通过中间层traits实现
  • 算法执行时,根据传入的参数,选择相应的iterator_traits

  • 标准库中还有其他的traits:type traits , char traits, allocator traits, pointer traits, array traits

声明:本博客由 ranjiewen原创,如需使用请引用或者添加转载字样,谢谢配合。同时也仅代表个人观点。

 打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

Powered by 冉杰文,分享从这里开始,精彩与您同在