补充知识:Iterator traits 萃取机
Iterator是算法和容器之间的桥梁,算法在操作容器元素的过程中,需要了解Iterator,以便采取最佳的操作方式。
算法常常会问迭代器的五种属性:
1、iterator_category 迭代器的分类 (iterator支持++、–、随机跳跃?)
2、iterator_difference_type 两个迭代器之间的距离应该用什么的表达。
3、iterator_value_type 迭代器所指向的元素的类型
4、iterator_reference_type 暂不使用
5、iterator_pointer_type 暂不使用
因此,每一个容器的iterator类都必须提供这5种associated types。算法会对iterator提问,iterator要回答。
既然算法问,迭代器类内部定义5种类型进行回答,那么traits萃取机是干嘛的?
需要明确一个概念:native pointer C++的指针是不是一个iterator? 答案是肯定的,但是C++的指针就是指针,不是一个类,不能够回答算法提出的问题。因此,萃取机traits的作用就是分辨iterator是class设计的iterator还是普通的指针。