【问题标题】:Return from the max function Stepanov Notes [duplicate]从最大函数 Stepanov 返回注释 [重复]
【发布时间】:2017-09-26 07:15:23
【问题描述】:

max()模板根据Stepanov Notes故意返回

b<a?a:b

而不是

a<b?b:a

确保即使两个值相等但不相等,函数也能正确运行 这里解释的很少,但还是看不懂 http://stepanovpapers.com/notes.pdf(第 63 页)

我想不出两个值相等但不相等的用例

【问题讨论】:

  • 不确定它是否适用于此,但NaN 不等于NaN
  • 在您链接的文档中,“相等”(或“平等”)一词仅出现在第 57 页,然后又出现在第 68 页。我不确定您在引用什么在这里。
  • 如果你覆盖了operator&lt;。因此,两个实例可能不同,但有一个字段相同,并且在重载运算符中使用。所以它们返回等效,但实际上并不相等,返回哪一个很重要。 sean parent 给出的展示这个微妙错误的示例是实现 clamp 函数。
  • @mkrieger1 感谢您提供我正在寻找的链接
  • 现在复制一个副本,你们正在努力! (不知道我们多久会得到重复循环)

标签: c++


【解决方案1】:

a==b第一个返回b,第二个返回a

当你重载一个类的&lt;函数时会触发

例如

class myClass {
public:
    int key;
    string value;
    bool operator<(const myClass& rhs) {
        return this->key < rhs.key;
    }
}

您可能需要决定您希望程序在更具体的情况下做什么

【讨论】:

    猜你喜欢
    • 2016-09-09
    • 2021-12-26
    • 1970-01-01
    • 2022-11-21
    • 2016-08-24
    • 2020-04-15
    • 2021-08-15
    • 2018-10-18
    • 1970-01-01
    相关资源
    最近更新 更多