我在一篇关于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++
?