STL迭代器分类:input迭代器、output迭代器、forward迭代器、bidirectional迭代器、random access迭代器。 算法
Input迭代器:只能向前移动,一次一步,客户只读取(不可写)他们所指的东西,并且只能读取一次。C++程序库中的istream_iterators就是input迭代器:模仿指向输入文件的阅读指针。 dom
Output迭代器:只能向前移动,一次一步名客户只可写(不可读)他们所指的东西,并且只能写一次。C++程序库中的ostream_iterator就是output迭代器:模仿指向输出文件的涂写指针。 spa
Forward迭代器:能够作前述两种分类所能做的每一件事,并且能够读或写其所指物一次以上。(可施行于屡次性操做算法) 指针
Bidirectional迭代器:他除了能够向前移动还能够向后移动。STL的list迭代器就是这一类:set、multiset、map、multimap。 继承
Random access迭代器:能够在常量时间内向前或向后跳跃任意距离。Vector、deque、string迭代器就是这一类。 input
struct input_iterator_tag{}; string
struct output_iterator_tag{}; it
struct forward_iterator_tag: public input_iterator_tag{}; io
struct bidirectional_iterator: public forward_iterator_tag{}; stream
struct random_access_iterator: public bidirectional_iterator_tag{};
这些structs之间的是继承关系。