首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >大算子">“满足严格弱序吗?

大算子">“满足严格弱序吗?
EN

Stack Overflow用户
提问于 2019-10-22 17:25:07
回答 2查看 368关注 0票数 7

定义

<是一个二进制关系,其中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),那么要求compequiv都是传递关系

其中comp被定义为

(§25.4-2) Compare是函数对象类型(20.9)。应用于Compare类型的对象的函数调用操作的返回值,当上下文转换为bool (第4条)时,如果调用的第一个参数小于第二个,则生成falseCompare comp始终用于假设排序关系的算法。

问题

">“满足严格弱序吗?我希望如此,但没有信心。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-10-22 17:40:15

大算子“>”满足严格弱序吗?

数学严格大于关系是严格弱序。

至于C++中的运算符,langauge:对于所有整数类型:是。一般情况下:不是,但在大多数情况下是的。严格小于操作符的情况也是如此。

至于令人困惑的引语,“小于”,在该上下文中,这意味着排序操作的最终结果是一个非递减序列,即对象“小于”或等于它们之后的对象。如果使用std::greater作为比较对象,那么较大的值按顺序排列为“较小的”。

这可能令人困惑,但并不是为了排除严格大于运算符。

>不满足严格弱序的情况是什么?

下面是一些例子:

  • 不满足属性的重载运算符。
  • 不指向同一数组的指针上的>运算符具有未指定的结果。
  • >不满足IEEE-754表示中浮点类型的自反性要求,除非NaNs被排除在域之外。
票数 7
EN

Stack Overflow用户

发布于 2019-10-22 17:39:03

即使标准对任意Compare函数引用“小于”,这也仅意味着排序上下文中的“小于”。

如果我通过比较函数[](int a, int b) { return a > b; }定义排序,那么如果元素的整数值更大,则该排序中的元素“小于”另一个元素。这是因为我所创建的顺序是整数的反向排序。您不应该在订单中将<理解为“小于”。你应该把它读成“先来”。

x < y是严格弱序时,x > y也是严格弱序,正好相反。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58509461

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档