【发布时间】:2015-08-20 19:39:03
【问题描述】:
我在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++?
【问题讨论】: