iterator traits

  • iterator必须提供的5种相关类型
    iterator_category:iterator的移动性质
    value_type:iterator所指元素本身类型
    difference_type:两个iterator之间的距离可以用何种类型表示
    pointer
    reference

  • 算法与迭代器的关系:

    • 如下图,算法通过迭代器获取这几种相关类型信息
      traits技术
  • 整个的流程如下图,算法对所需类型信息提问,迭代器回答。
    traits技术
    但对于原生指针(相当于退化的iterator),其无法回答问题,这时候就需要iterator traits作为中介回答问题。
    相当于在容器与算法中间加了一个中间层替代iterator回答问题。
    traits技术
    如下图的iterator_traits

  • 对于class iterator,其直接询问获取;

  • 对于原生指针,采用偏特化实现特殊处理.
    traits技术


C++ traits技术浅谈

相关文章: