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个信息,从而使得数据类型和算法之间解耦。

posted @ 2021-03-09 13:11  HarryPotterIsDead!  阅读(255)  评论(0编辑  收藏  举报