OutputIterator上的前/后增量运算符

时间:2015-06-05 18:37:42

标签: c++ stl stream iterator

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

所以,

*it++ = t 

将是

{*it = t; ++it; }

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; }

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

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

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

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

1 个答案:

答案 0 :(得分:5)

The use of this operator is formal。无论OutputIterator - 运算符是否有任何影响,++都必须支持运算符。