2
ifstream file1;
file1.open("in1.txt");
istream_iterator<string> iterator1(file1);
copy(istream_iterator<string>(file1), istream_iterator<string>(), back_inserter(lstr));

我们可以让两个输入流迭代器指向一个文件吗?与上述情况一样,迭代器越来越先进(只有一次延迟,因为它应该是)并且副本中缺少第一个元素(字符串)。有没有可能的方法?

4

2 回答 2

2

你可以,但是如果你推进一个,文件指针会随之推进,所以它会影响另一个的下一个推进。此外,迭代器在创建时会提前一次,因此在需要之前不要创建它。

于 2010-11-20T21:59:00.150 回答
1

该标准在 24.1.1 中将其作为需求规则的注释进行了说明。既然每个人都想听标准语,我引用它

[注意:对于输入迭代器,a == b 并不意味着 ++a == ++b。(相等性不保证替换属性或引用透明性。)输入迭代器的算法不应该尝试通过同一个迭代器两次。它们应该是单通道算法。

于 2010-11-20T22:32:26.203 回答