首页 >后端开发 >C++ >如何定义严格的弱排序 `

如何定义严格的弱排序 `

DDD
DDD原创
2025-01-03 07:56:38668浏览

How to Define a Strict Weak Ordering `

定义运算符 对于 n 元组上的严格弱排序

问题:

如何实现

遵循严格弱排序概念的 n 元组(例如 3 元组)的运算符?

答案:

理解严格弱排序
  • 严格弱序是一种数学关系,定义两个对象之间的特定比较:
  • 等效:两个对象被视为相等(即,a

小于: 一个对象被认为“小于”另一个(即,a

实现

运算符

struct S {
    ThingA a;
    ThingB b;
};

bool operator<(S const& lhs, S const& rhs) {
    return std::tie(lhs.a, lhs.b) < std::tie(rhs.a, rhs.b);
}
定义

对于 n 元组的运算符,您必须建立确定一个元组何时被视为等于或小于另一个元组的条件。这取决于元组的特定数据结构和语义。

bool operator==(S const& lhs, S const& rhs) {
    return std::tie(lhs.a, lhs.b) == std::tie(rhs.a, rhs.b);
}
以 std::tuple 为例C 标准库的 std::tuple 类实现了正确的这假设 ThingA 和 ThingB 已经实现了严格的弱排序。您还可以使用类似的方法实现相等:

以上是如何定义严格的弱排序 `的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn