1.定义5类迭代器的标志类,该标志类用于实现函数的区别调用(即重载),例如求两迭代器距离函数distance(iter1,iter2,tag),移动函数advance(iter,n,tag)。这五个标志类分别为:input_iterator_tag,output_iterator_tag,forward_iterator_tag,bidirectional_iterator_tag,random_access_iterator_tag。
2.对于每一个iterator类,都必须包含5个属性,分别为:iterator_category、value_type、difference_type、pointer、reference。
3.定义一个迭代器的“属性榨汁机”iterator_traits,用于获取iterator的5中属性值。
4.定义迭代器的操作,分别为:
1) 获取iterator的标志----->iterator_category(iter);
2)获取两迭代器差值的类型----->distance_type(iter);
3)获取迭代器的原始类型--------->value_type(iter);
4)求两迭代器的距离---------------->distance(iter1,iter2,tag);
5)将迭代器移动n位------------------>advance(iter,n,tag)。
参考文献:
[1]《C++ Primer中文版 第4版》
[2]《STL源码剖析 侯捷》