istream_iterator,黑魔法?

时间:2014-03-30 03:20:13

标签: c++ c++11 iostream istream-iterator

我不明白为什么第二个参数for_each是一个空的迭代器。有人可以向我解释一下吗?

fstream("datfile.txt"); 
for_each(istream_iterator<string>(datfile), istream_iterator<string>(), rand_func);

2 个答案:

答案 0 :(得分:4)

这是一个特殊的“哨兵”值,其唯一目的是在与已达到EOF的另一个true相比时返回值istream_iterator()

答案 1 :(得分:3)

默认构造的istream_iterator用作表示流状况结束的标记。从istream读取结束时,for_each的第一个迭代器输入将等于此sentinel迭代器,从而终止for_each