iterator traits
-
iterator必须提供的5种相关类型:iterator_category:iterator的移动性质value_type:iterator所指元素本身类型difference_type:两个iterator之间的距离可以用何种类型表示pointer:reference: -
算法与迭代器的关系:
- 如下图,算法通过迭代器获取这几种相关类型信息
- 如下图,算法通过迭代器获取这几种相关类型信息
-
整个的流程如下图,算法对所需类型信息提问,迭代器回答。
但对于原生指针(相当于退化的iterator),其无法回答问题,这时候就需要iterator traits作为中介回答问题。
相当于在容器与算法中间加了一个中间层替代iterator回答问题。
如下图的iterator_traits, -
对于
class iterator,其直接询问获取; -
对于
原生指针,采用偏特化实现特殊处理.