我已经读过输入迭代器用于读入cin
之类的输入流,其中可能包含"abc"
之类的内容。如果我们有两个迭代器,假设它们的类型为std::istream_iterator
,它们都指向'a'
,然后我们增加其中一个,则另一个将失效。
我想知道为什么会这样。似乎增加一个迭代器会使它读入'b'
,但是我不确定为什么增加另一个迭代器也不能使它工作。我读过确实会发生这种情况,但是对于为什么会这样,我有些困惑。输入流是如何构成的,还是其他?
答案 0 :(得分:0)
InputIterator
不是一个特定的类,它是一个概念,可以有效地实现某些构造。例如,假设您有一个带有行的文件,最大行长为128个字节,并且必须提供一个可迭代的接口:使用输入迭代器的概念,您可以为单个行分配一个缓冲区,并简单地读取下一行每当输入迭代器递增时,就进入该缓冲区。
另一个例子:假设您有一个生成器函数,该函数生成斐波那契序列。基于BidirectionalIterator
的实现将需要将生成的号码存储在某个地方,而基于InputIterator
的解决方案可以简单地向生成器询问下一个号码,并丢弃当前的号码-不需要额外的存储。>