gpt4 book ai didi

c++ - STL ostream_iterator 写入屏幕,即使我覆盖了它?

转载 作者:太空宇宙 更新时间:2023-11-04 15:53:53 24 4
gpt4 key购买 nike

在我的代码中,我有以下内容:

ostream_iterator<double> doubleWriter(cout, " ~ ");
// ...
*doubleWriter = 1.1;
doubleWriter++;
*doubleWriter = 2.2;
*doubleWriter = 3.3; // shouldn't 2.2 be overwritten?
doubleWriter++;
*doubleWriter = 44.2;

cout << endl << endl;

我希望它输出这个:

1.1 ~ 3.3 ~ 44.2 ~ 

相反,输出是这样的:

1.1 ~ 2.2 ~ 3.3 ~ 44.2 ~ 

为什么会这样?在我看来,我覆盖了 2.2 并将 3.3 留在了它的位置,因为我没有递增。递增是可选步骤吗?

最佳答案

对于标准的 ostream_iterator,运算符 ++(前缀和后缀)是空操作。它什么都不做,也没有任何区别。

无需手动执行 ++,因为当您通过它输出某些内容时,迭代器总是“前进”。

P.S. 据图书馆Defect Report 485 ,目的是要求赋值和增量交替进行。这个要求显然没有进入标准的当前版本。但在未来的修订中,它会被包括在内。换句话说,正如其他人已经指出的那样,使用输出迭代器的正确方法是交替赋值和递增。

关于c++ - STL ostream_iterator 写入屏幕,即使我覆盖了它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3049597/

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