定义
设
<是一个二进制关系,其中a < b的意思是"a小于b“。设>是一个二进制关系,其中a > b的意思是"a大于b“。
因此,我们假设<和>有我们在日常生活中通常使用的含义。虽然,在某些编程语言(例如C++)中,我们可以重载它们以给它们不同的定义,但以后我们就不会考虑这个问题了。
上下文:
就我所读到的严格弱序的数学定义(例如维基百科)而言,我认为<和>都满足它。然而,我在许多网站上看到的所有例子都只提到了<。甚至还有网站说
它们的大致意思是,严格的弱序必须表现为“小于”的行为:如果a小于b,那么b不小于a,如果a小于b,b小于c,那么a小于c,以此类推。
此外,在N4140 (C++14国际标准)中,严格弱排序定义为
(第25.4-4节)如果我们把
equiv(a, b)定义为!comp(a, b) && !comp(b, a),那么要求comp和equiv都是传递关系
其中comp被定义为
(§25.4-2)
Compare是函数对象类型(20.9)。应用于Compare类型的对象的函数调用操作的返回值,当上下文转换为bool(第4条)时,如果调用的第一个参数小于第二个,则生成false。Compare comp始终用于假设排序关系的算法。
问题:
">“满足严格弱序吗?我希望如此,但没有信心。
发布于 2019-10-22 17:40:15
大算子“>”满足严格弱序吗?
数学严格大于关系是严格弱序。
至于C++中的运算符,langauge:对于所有整数类型:是。一般情况下:不是,但在大多数情况下是的。严格小于操作符的情况也是如此。
至于令人困惑的引语,“小于”,在该上下文中,这意味着排序操作的最终结果是一个非递减序列,即对象“小于”或等于它们之后的对象。如果使用std::greater作为比较对象,那么较大的值按顺序排列为“较小的”。
这可能令人困惑,但并不是为了排除严格大于运算符。
>不满足严格弱序的情况是什么?
下面是一些例子:
>运算符具有未指定的结果。>不满足IEEE-754表示中浮点类型的自反性要求,除非NaNs被排除在域之外。发布于 2019-10-22 17:39:03
即使标准对任意Compare函数引用“小于”,这也仅意味着排序上下文中的“小于”。
如果我通过比较函数[](int a, int b) { return a > b; }定义排序,那么如果元素的整数值更大,则该排序中的元素“小于”另一个元素。这是因为我所创建的顺序是整数的反向排序。您不应该在订单中将<理解为“小于”。你应该把它读成“先来”。
当x < y是严格弱序时,x > y也是严格弱序,正好相反。
https://stackoverflow.com/questions/58509461
复制相似问题