<aside> 💡
iterator需要能够回答算法的提问
</aside>
iterator需要提供的五个属性(associated types)
iterator_category
:迭代器的分类
difference_type
:两个迭代器之间距离的范围value_type
:指向的数据的类型reference
、pointer
:暂时没被使用到的两个属性<aside> 💡
Iterator Traits用于区分class iterators与non-class iterators(如pointer)
</aside>
traits使用偏特化区分non-class iterator