输入迭代器的相等性比较

Equality comparison for Input iterators

本文关键字:比较 迭代器 输入      更新时间:2023-10-16

对于输入迭代器,如果其中一个迭代器无效,比较相等的要求是什么?

input_iter x = foo();
input_iter y = x;
++x;
return x == y;  // What must this return?

在上面的例子中,取消引用y显然是未定义的,但是像这样的相等比较的结果是否定义?阅读 cppreference.com,如果两个输入迭代器实际上相同,则肯定是必须比较true,因为输入迭代器必须满足EqualityComparable,但我实际上没有看到任何说明结果必须是什么如果不一样。我是否允许始终operator==返回true(除非与结束迭代器进行比较(?

">对于输入迭代器,如果其中一个迭代器无效,比较相等的要求是什么?

没有。引用ISO/IEC 14882:2003(E(, [lib.input.iterators]

==其域上的等价关系(着重号添加(
bool(a==b) != bool(a!=b)==域(着重号后加(

r[++r之前] 的先前值的任何副本都不再 ...在==领域.

对于无效的输入迭代器,不要求==!=具有任何特定行为。