迭代器是一种处理位于容器中的元素序列的非常一般而又极其有用的概念。但是,容器并不是我们能够遇到元素序列的仅有的地方。例如,一个输入流也能产生一个值的序列,我们也会把一个值的序列写进一个输出流中。正因为这样,人们也将迭代器的概念很有效地应用到输入和输出上。
要做出一个ostream_iterator,我们需要描述被使用的将是哪个流,还要描述写入其中的对象的类型。例如,我们可以定义一个引用了标准输出流cout的迭代器:
这就形成另一种向标准输出写规范信息的方式。这里 ++oo的记法是模仿通过指针向数组写入的方式。对于简单的工作,这种方式不会是我的第一选择。但把输出处理为一种只能写入的容器是很有用的,我们不久就会看得更清楚—如果现在还没完全明白的话。
与此类似,一个istream_iterator就是某种东西,它使我们可以像从容器读出一样从输入流中读出。同样,我们必须描述所用的输入流和所期望的值类型: