小编YAD*_*DAV的帖子

OutputIterator上的前/后增量运算符

我在一篇文章中读到OutputIterator,我们只能将它取消引用为左值.我的问题是operator++将迭代器增加到一个位置.

所以,

*it++ = t 
Run Code Online (Sandbox Code Playgroud)

将会

{*it = t; ++it; }
Run Code Online (Sandbox Code Playgroud)

https://www.sgi.com/tech/stl/OutputIterator.html

现在,我假设它operator++会以这样的方式超载,它会增加OutputIterator一个位置.

ostream_iterator也是一个OutputIterator并实现了所有要求OutputIterator.

那为什么operator++实现如下所示ostream_iterator

ostream_iterator<T,charT,traits>& operator++() { return *this; }
ostream_iterator<T,charT,traits>& operator++(int) { return *this; }
Run Code Online (Sandbox Code Playgroud)

http://www.cplusplus.com/reference/iterator/ostream_iterator/

这表明operator++什么也没做.

取消引用输出操作符是否分配新值并将其前进一个位置?没用operator++

如果是这样,那么我们为什么需要实施operator++呢?

c++ iterator stl stream

3
推荐指数
1
解决办法
97
查看次数

标签 统计

c++ ×1

iterator ×1

stl ×1

stream ×1