gpt4 book ai didi

c++ - 距离使我的迭代器 "freeze"

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:01:12 27 4
gpt4 key购买 nike

试试这个:

int main()
{
std::fstream fin_fout("some.txt");
std::istream_iterator<std::string> beg(fin_fout),end;
std::distance(beg,end);//if this line is commented out it works fine but not if is uncommented
while (beg != end)
{
cout << *beg;
++beg;
}
return 0;
}

最佳答案

输入迭代器上的

distance 将重复调用 operator++。但是,此操作使迭代器的所有拷贝无效,因为它们都引用相同的底层流

这是合乎逻辑的:考虑迭代器代表什么:输入流的当前状态。一旦您推进迭代器,该状态就会改变。因此,所有其他代表旧状态的迭代器现在指的是不再存在的状态。

这就是您看到此行为的原因。

此外,从两个流运算符中获取距离不是有意义的操作,因为流没有固定的长度:流表示 transient 。

关于c++ - 距离使我的迭代器 "freeze",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6277352/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com