码迷,mamicode.com
首页 > 其他好文 > 详细

iterator 的设计原则和traits

时间:2017-02-12 21:20:23      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:设计   log   移动性   一段   category   style   算法   com   存储   

 

iterator我前面写过是作为algorithm和container之间的一个桥梁,algorithm进程操作的时候向iterator进行提问,iterator并对提问进行了回答,其中主要就是回答5个特性

1:iterator_category:迭代器移动性质,比如说有的迭代器只能向前移动++。有的迭代器可以双向移动,有的迭代器只能一个一个移动,有的迭代器可以跳跃式移动

2:value_type:就是迭代器的类型

3:different_type :指的是范围,可能是begin到end,可能是其中的某一段区间,,就是说algorithm想要操作那一段区间,

4:refenrence

5:pointer

后两种几乎用不到

那么算法需要跌倒器返回这么多信息。这不是一个指针所能提供的,间接说明iterator是一个class,

iterator必须能够应对algorithm的提问

 

技术分享

技术分享

 

 

 

下面我们看一下2.9和4.9版本的list的iterator,可以看到迭代器里面都是这5个变量,他们都几乎相识

技术分享

 

 

 

技术分享

 

 traits就是萃取机,有的iterator是一个class,但是有的iterator就是一个指针,eg:vector和array,那么一个指针怎么存储呢,这里就用到了萃取机,我们将那5种类型都存在萃取剂里面,算法需要的时候就问iterator traits,iterator traits就问里面的结构(还是iterator),这里会根据algorithm传的类型,判断是使用类的trains,还是偏特化的

技术分享

 

技术分享

 

iterator 的设计原则和traits

标签:设计   log   移动性   一段   category   style   算法   com   存储   

原文地址:http://www.cnblogs.com/13224ACMer/p/6391753.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!