istream_iterator, black magic?

istream_iterator, black magic?

本文关键字:magic black iterator istream      更新时间:2023-10-16

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

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

这是一个特殊的"哨兵"值,它的唯一目的是在与另一个达到EOF的istream_iterator()进行比较时返回值true

默认构造的istream_iterator用作指示流结束条件的哨兵。当从istream结尾读取时,输入到for_each的第一个迭代器将等于这个哨兵迭代器,从而终止for_each