gpt4 book ai didi

c++ - 输入迭代器的相等性比较

转载 作者:搜寻专家 更新时间:2023-10-31 02:10:29 25 4
gpt4 key购买 nike

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

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]

== is an equivalence relation over its domain, (emphasis added)
bool(a==b) != bool(a!=b) over the domain of == (emphasis added)

还有,

any copies of the previous value of r [prior to ++r] are no longer ... in the domain of ==.

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

关于c++ - 输入迭代器的相等性比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45156266/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com