考虑一个输入迭代器,例如join_iterator
:它迭代其他范围的串联。重复调用++i
可能比简单的i += n
.
尽管如此,大多数需要将迭代器推进任意数量的 C++ 代码都使用,当迭代器不是随机访问时std::advance
,它会自动诉诸调用。++i
(可悲的是,大多数人使用std::advance(i, n)
而不是using std::advance; advance(i, n)
,所以我不能只提供advance
我的迭代器并依赖 ADL。)
另一方面,我不能使用+
或者+=
因为输入迭代器不必实现它们。
所以问题是:在以下情况下,我将如何支持这种情况:
实现这样的迭代器?
使用可能具有优化的输入迭代器
operator +=
?
(请注意,这advance
并不是+
唯一重要的场景——distance
并且-
有同样的问题。)