要解释一下什么是输入和输出。
输入迭代器
术语“输入”是程序的角度说的,即来自容器的信息被视作为输入,就像来自键盘的信息对程序来说是输入一样。因此,输入迭代器可被程序用来读取容器中的信息。,但不一定能让程序修改容器中的值。因此,需要输入迭代器的算法将不会修改容器中的值。顺便说一句,并不能保证输入迭代器第二次遍历容器时,顺序不变。输入迭代器被递增后,也不能保证其先前的值仍然可以被解除引用。基于输入迭代器的任何算法都应当是单通行的,不能依赖于前一次遍历时的迭代器值,也不能依赖于本次遍历中前面迭代器的值。
输出迭代器
这也是从程序的角度去说的。程序的输出就是容器的输入。输出迭代器只是解除引用让程序能修改容器的值,但是不能读取。有一个类似的例子,比如发送到显示器上的输出就是如此,cout可以修改发送到显示器的字符流,但是不能读取屏幕上的内容。输出迭代器也是单通行的。
其它三种迭代器都是双通行的。