输入和输出迭代器是可交换的吗?

Input and output iterators are swappable?

Input iterators Output Iterators

  1. Swappable: The value pointed to by these iterators can be exchanged or swapped.

在这两个链接中声明输入迭代器或输出迭代器指向的值可以交换或交换。我不确定他们是什么意思。在输入迭代器的情况下,当您无法分配给它们时,您将如何更改指向的值?在输出迭代器的情况下,当您无法读取值时,您如何知道要写入什么值?

还声明不能比较输出迭代器是否相等。为什么?

这并不是说您可以 使用 那些迭代器来交换值,也不是说根本不交换值。或者,如果是这样说,那是错误的。

可交换性是对迭代器类型的要求;这只是迭代器的几个核心规则之一 ([iterator.iterators/2.1])。


至于比较输出迭代器是否相等,该陈述至少部分是错误的。 不需要输出迭代器来支持相等性检查,但仍然可以 ([iterator.concept.output/1])。他们做不到的地方,是因为没有合乎逻辑的方法来实现它。例如,在我脑海中,ostream_iterator 似乎很可能属于这一类,因为它 "point" 在哪里?你如何表示?


所以该网站充其量是误导性的(最坏的情况是完全错误的),但这就是我们不从随机网站学习 C++ 的原因。