iterator_traits是什么 有什么用
iterator_traits是“类型萃取器”,充当数据和算法之间的桥梁。目的是为了确定跟iterator有关的信息。
STL算法在使用iterator时,也需要知道跟iterator相关的5个信息:
iterator_category:迭代器种类,如RandomAccessIterator等
value_type:元素类型,如int char和各种class等
pointer:元素类型的指针,如int*等
reference:元素的引用,如int&等
difference_type:迭代器间的距离,当做有符号整数来理解
有了这些信息,算法才可以根据参数的类型特化出不同的函数版本
比如有些算法根据RandomAccessIterator特化的函数里会包含直接让两个iterator相减的内容,如果让两个链表的iterator相减,得到的值就是没有意义的。
iterator_traits会根据传入的变量、模板类型推导这5个信息,从而使得数据类型和算法之间解耦。