输入迭代器与输出迭代器
输入迭代器和输出迭代器是最基本、要求最低的迭代器,几乎所有的迭代器都具备这两个迭代器的功能。
1、输入迭代器
输入迭代器(Inputiterator):只能一次一个的向前读取元素,并按此顺序传回元素值,是不可重复的单向遍历。输入迭代器支持的操作如下所示:
● *:用于从迭代器中读取实际元素。
● ->:读取实际元素的成员。
● ++:无论是放在迭代的前面还是后面,都代表向前移动一个单位。
● ==:判断两个迭代器是否相等。
● !=:判断两个迭代器是否不相等。
● 迭代器复制操作,产生一个迭代器副本。
输入迭代器只能读取元素一次,移到迭代器到下一个位置后,不能保证之前的迭代器还有效,一个典型例子就是输入流迭代器,即从标准输入设备读取数据的迭代器,同一个值不会被读取两次,一旦从输入流读入一个数据后,下次再读取时会传回另一个值。如果要复制输入迭代器,且原有的迭代器和新产生的副本都向前移动,那么这两个迭代器会读取不同的值。
注意:如果有两个输入迭代器it1和it2,且有it1==it2,但这并不保证++it11==++it2,更不能保证*(++it1) == *(++it2),因此用输入迭代器读入的序列不能保证是可重复的。
2、输出迭代器
输出迭代器(Outputiterator):与输入迭代器相反,其作用是将元素值逐个写入,即只能逐个元素赋值。输出迭代器也支持对序列进行单向遍历,当把迭代器移到下一个位置后,也不能保证之前的迭代器是有效的。输出迭代器可以实现*、->、++和复制操作。