iterator_traits萃取迭代器特性
value_type(基本数据类型)
difference_type(距离类型)
pointer
reference
iterator_category(根据移动特性与施行操作分)
InputIterator++
OutputIterator
ForwardIterator++
BidirectionalIterator++--
RandomIterator+=-=
注:STL算法命名规则,以算法所能接受最初迭代器类型为迭代器命名(命名约定,具体则是模板推演)
traits编程技巧原理:利用内嵌类型与template推导增强C++类型识别
三个方法求得类型
value_type
iterator_category
distance_type
__type_traits萃取型别特性
has_traivial_default_constructor
has_traivial_copy_constructor
has_traivial_assignment_operator
has_traivial_destructor
is_POD
注:内部定义__true_type,__false_type进行类型辨别
eg uninitailized_fill_n()
__uninitailized_fill_n()判定isPOD()
__false_type
for()construct()