C++:为什么输出迭代器不支持比较操作?

C++: why output iterators do not support comparison operations?

本文关键字:比较 操作 不支持 迭代器 为什么 输出 C++      更新时间:2023-10-16

我读到除了输出迭代器,所有其他类别的迭代器都至少支持 == 和 != 运算符。

为什么输出迭代器不支持此功能?

不禁止比较i1i2std::vector::iteratorOutputIterator,你可以比较它们。你不能做的是假设所有OutputIterator都可以比较。

所有的概念是说,一个类型不需要支持比较才能成为一个OutputIterator,因为要求它意味着一些真正值得OutputIterator的东西不是。一个例子是@NathanOliver的磁带迭代器。另一个例子是std::ostream_iterator

我们已经遇到过这样的情况:其中一个迭代器类别有一个过于繁琐的要求:ForwardIterator要求取消引用返回引用类型。这意味着任何代理迭代器都仅限于InputIterator,即使它支持--+=-=等。

如果您发现自己正在编写多个想要写入的函数,直到它们"填充"输出,则可以考虑定义一个类别ComparableOutputIterator(或某个这样的名称),并要求该类别的成员资格具有==OutputIterator