iterator 的设计原则和traits

迭代器原理与特性

 

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,还是偏特化的

 

 

转载于:https://www.cnblogs.com/13224ACMer/p/6391753.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值