2014-03-30 82 views
0

我不明白爲什麼第二個參數for_each是一個空的迭代器。有人可以向我解釋這件事嗎?istream_iterator,黑魔法?

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

回答

4

這是一個特殊的「哨兵」值,其唯一目的是在與另一istream_iterator()已經達到EOF相比,返回值true

3

默認構造的istream_iterator被用作表示流條件結束的標記。當從istream結束讀取時,第一個迭代器輸入到for_each將等於該哨兵迭代器,因此終止for_each