【发布时间】:2017-12-22 16:49:24
【问题描述】:
对于输入迭代器,如果其中一个迭代器已失效,比较相等性的要求是什么?
input_iter x = foo();
input_iter y = x;
++x;
return x == y; // What must this return?
在上面的例子中,取消引用y 显然是未定义的,但是像这样的相等比较的结果是否已定义?阅读cppreference.com,绝对是两个输入迭代器必须比较true,如果它们实际上是相同的,因为输入迭代器必须满足EqualityComparable,但我实际上没有看到任何说明如果结果必须是什么不相同。我是否可以总是从operator== 返回true(与结束迭代器比较时除外)?
【问题讨论】:
-
这似乎暗示你应该返回
false如果它们不相等,但你是对的,它没有明确说明,这很奇怪。值得注意的是,x != y被定义为等同于!(x == y),所以这可能会迫使你在这里。
标签: c++ iterator input-iterator