如何在满足严格弱排序的n元组上定义operator<

2023-11-27

如何定义operator<在 n 元组上(例如在 3 元组上),使其满足严格弱序概念 ?我知道 boost 库有正确定义的元组类operator<但由于某些原因我无法使用它。


严格弱序

这是一个数学术语,用于定义两个对象之间的关系。
它的定义是:

如果 f(x, y) 和 f(y, x) 都为假,则两个对象 x 和 y 是等价的。请注意,对象始终(通过反自不变量)等于其自身。

就 C++ 而言,这意味着如果您有两个给定类型的对象,则与运算符

X    a;
X    b;

Condition:                  Test:     Result
a is equivalent to b:       a < b     false
a is equivalent to b        b < a     false

a is less than b            a < b     true
a is less than b            b < a     false

b is less than a            a < b     false
b is less than a            b < a     true

如何定义等效/更少完全取决于对象的类型。

正式定义:
严格弱排序

计算机科学:
严格弱排序

它与运营商有何关系:
比较器


作为旁注,我们可以手动实现严格的弱排序。但我们可以简单地使用std::tuple它已经为你实现了。您只需要创建一个元组而不复制对象。

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);
}

注意:这假设thingA and thingB自己已经实施了严格的弱排序。

我们也可以用同样的方式实现平等:

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

再次注意:这假设thingA and thingB已经实行平等。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在满足严格弱排序的n元组上定义operator< 的相关文章

  • 如何在 Visual Studio 2010 中增强 XAML 设计器?

    当我使用 XAML 设计器时 进入设计器和退出设计器是如此困难和缓慢 当我这样做时 Visual Studio 卡了一段时间 有什么方法可以增强 XAML 设计器和编辑器吗 Ant 保存 XAML 文件时非常慢 这通常意味着您可能有复杂的
  • 用 C++ 进行服装建模 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在编写一些软件 最终会绘制一个人体框架 可以配置各种参数 并且计划是在假人身上放置某种衣服 我研究
  • VB.NET 相当于 C# 属性简写吗?

    是否有与 C 等效的 VB NET public string FirstName get set 我知道你能做到 Public Property name As String Get Return name ToString End Ge
  • XC测试元组

    我正在尝试构建一个单元测试 如下所示 region is a Double Double tuple XCTAssertEqual region 0 0 200 0 但 Xcode 给我一个错误 Cannot invoke XCTAsser
  • 如何检查QProcess是否正确执行?

    QProcess process sdcompare QString command sdcompare QStringList args sdcompare command sdcompare diff args sdcompare lt
  • 如何修复此错误“GDI+ 中发生一般错误”?

    从默认名称打开图像并以默认名称保存 覆盖它 我需要从 Image Default jpg 制作图形 将其放在 picturebox1 image 上并在 picurebox1 上绘制一些图形 它有效 这不是我的问题 但我无法保存 pictu
  • 在 Unity 进程和另一个 C# 进程之间进行本地 IPC 的最快方法 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我希望每秒大约 30 次从 C 应用程序向我的 Unity 应用程序传送大量数据 由于 Unity 不支持映射内存和管道 我考虑了 t
  • 单元测试一起运行时失败,单独运行时通过

    所以我的单元测试遇到了一些问题 我不能只是将它们复制并粘贴到这里 但我会尽力而为 问题似乎是 如果我一项一项地运行测试 一切都会按预期进行 但如果我告诉它一起运行测试 则 1 5 将通过 TestMethod public void Obj
  • 读取文件特定行号的有效方法。 (奖励:Python 手册印刷错误)

    我有一个 100 GB 的文本文件 它是来自数据库的 BCP 转储 当我尝试导入它时BULK INSERT 我在第 219506324 行上收到一个神秘错误 在解决此问题之前 我想看看这一行 但可惜的是我最喜欢的方法 import line
  • 如何访问另一个窗体上的ListView控件

    当单击与 ListView 所在表单不同的表单中的按钮时 我试图填充 ListView 我在 Form1 中创建了一个方法以在 Form2 中使用 并将参数传递给 Form1 中的方法 然后填充 ListView 当我调试时 我得到了传递的
  • 将 System.Windows.Input.KeyEventArgs 键转换为 char

    我需要将事件参数作为char 但是当我尝试转换 Key 枚举时 我得到的字母和符号与传入的字母和符号完全不同 如何正确地将密钥转换为字符 这是我尝试过的 ObserveKeyStroke this new ObervableKeyStrok
  • 生成(非常)大的非重复整数序列而不进行预洗牌

    背景 我编写了一个简单的媒体客户端 服务器 我想生成一个不明显的时间值 随从客户端到服务器的每个命令一起发送 时间戳中将包含相当多的数据 纳秒分辨率 即使它不是真正准确 因为现代操作系统中计时器采样的限制 等 我想做的 在 Linux 上
  • 用于检查项目文件中的项目变量和引用路径的 api

    我正在研究一个 net application VS2010 与 x 没有 解和变量号这些解决方案中的项目数量 我需要检查项目属性 特定于一定数量的项目 是否同质 并且检查 验证构建期间的参考路径 有没有一个API是这样的吗 如果没有 我该
  • PlaySound 可在 Visual Studio 中运行,但不能在独立 exe 中运行

    我正在尝试使用 Visual Studio 在 C 中播放 wav 文件 我将文件 my wav 放入项目目录中并使用代码 PlaySound TEXT my wav NULL SND FILENAME SND SYNC 我按下播放按钮 或
  • 如何使用 watin 中的 FileUploadDialogHandler 访问文件上传对话框

    我正在使用 IE8 和 watin 并尝试通过我的网页测试上传文件 我不能简单地使用 set 方法设置上传文件 例如 ie FileUpload Find ById someId Set C Desktop image jpg 因为上传文本
  • 批量更新 SQL Server C#

    我有一个 270k 行的数据库 带有主键mid和一个名为value 我有一个包含中值和值的文本文件 现在我想更新表格 以便将每个值分配给正确的中间值 我当前的方法是从 C 读取文本文件 并为我读取的每一行更新表中的一行 必须有更快的方法来做
  • Process.Start() 方法在什么情况下返回 false?

    From MSDN https msdn microsoft com en us library e8zac0ca v vs 110 aspx 返回值 true 表示有新的进程资源 开始了 如果由 FileName 成员指定的进程资源 St
  • 如何在按钮单击时模拟按键 - Unity

    我对 Unity 中的脚本编写非常陌生 我正在尝试创建一个按钮 一旦单击它就需要模拟按下 F 键 要拾取一个项目 这是我当前的代码 在编写此代码之前我浏览了所有统一论坛 但找不到任何有效的东西 Code using System Colle
  • 英特尔 Pin 与 C++14

    问题 我有一些关于在 C 14 或其他 C 版本中使用英特尔 Pin 的问题 使用较新版本从较旧的 C 编译代码很少会出现任何问题 但由于 Intel Pin 是操作指令级别的 如果我使用 C 11 或 C 14 编译它 是否会出现任何不良
  • Linq-to-entities,在一个查询中获取结果+行数

    我已经看到了有关此事的多个问题 但它们已经有 2 年 或更长 的历史了 所以我想知道这方面是否有任何变化 基本思想是填充网格视图并创建自定义分页 所以 我还需要结果和行数 在 SQL 中 这将类似于 SELECT COUNT id Id N

随机推荐

  • 如何使用 LINQ 将字典的键和值合并到一个列表中?

    我有一本字典 其中键是一个字符串 值是与该键对应的字符串列表 我想显示字典中的所有键 并在该键下方显示与该键关联的值 像这样的东西 Key 1 Value 1 Value 2 Value 3 Key 2 Value 1 Value 2 在
  • Git 与 SVN 与非文本文件/大型项目

    过去几周我一直在学习 Git 与 SVN 相比 我真的很喜欢它的工作方式 我希望完全切换到它的主要原因是 合并应该更容易 几乎没有冲突 而且我可以在本地提交 这促进了许多分支的使用 例如每个票证 问题 任务 等的一个分支 并且还促进了许多提
  • 调整未知数量的元素大小以填充父容器的宽度

    我需要将未知数量的 div 可能限制为 5 左右 放入父容器中 并始终确保它们保持均等划分 我不确定这是否可以单独使用 CSS 来完成 但我想我最好问一下 因此 如果我们知道使用了 3 个 div div div class menu bu
  • cassandra 分片和复制

    我是 Cassandra 的新手 不过本文解释分片和复制 我陷入了一个困境 我的本地计算机上配置了一个包含 6 个 Cassandra 节点的集群 我创建一个新的键空间 TestKeySpace 复制因子为 6 并在键空间 employee
  • 位置管理器是在调度队列上创建的

    这个消息是什么意思 注意 位置管理器 0xe86bdf0 是在主线程以外的线程上执行的调度队列上创建的 开发人员有责任确保在分配位置管理器对象的线程上运行运行循环 特别是 不支持在任意调度队列 未附加到主队列 中创建位置管理器 这将导致无法
  • 从用户选择的文本返回 HTML

    我有以下非常简单的 html 页面 This is span style background color black color white the span
  • Spark:将大 MySQL 表读入 DataFrame 失败

    我想提前告诉您 以下几个相关问题不能解决我的问题 Spark查询运行速度非常慢 将 mysql 表转换为数据集非常慢 Spark 不会加载大型 MySql 表 Spark MySQL 从数据库读取时出错 This one很接近 但堆栈跟踪不
  • 为什么 jQuery 的电子邮件验证正则表达式如此简单?

    We all know that a regex to validate emails properly would be quite complicated However jQuery s validation plugin has a
  • 使用 git post-receive 挂钩的边带解复用器中出现错误

    我已经使用 git 设置了一个 EC2 实例 并使用 post receive hook 将其部署到我的服务器本教程 这是我的控制台的输出 git push production master email protected s passw
  • 为什么我可以使用 Javascript 阻止 keydown 上的默认事件,但不能阻止 keyup 上的默认事件?

    使用时 keydown我可以捕获 keydown 事件 然后检查并防止默认操作 显示字符 使用时 keyup我不能 我知道该事件被捕获为alert 当代码处于条件内但仍触发时触发preventDefault 不会阻止该操作 这里有一个完整的
  • 按时间和 pandas 中的其他列分组

    我有一个大的 pandas 数据框 其中包含时间戳 名称和值列 index timestamp name value 0 1999 12 31 23 59 59 000107 A 16 1 1999 12 31 23 59 59 00038
  • 胶水爬虫排除模式

    我有一个 s3 存储桶 我正在尝试对其进行爬网和编目 格式是这样的 其中 SQL 文件是 DDL 查询 CREATE TABLE语句 匹配不同数据文件的模式 即data1 data2 etc s3 my bucket somedata 20
  • 将 Html 表导出到 Excel 并保留 css 样式

    我正在使用 Excel Web 查询将 html 表 MVC 视图 导出到 Excel 我如何让它携带CSS样式 如果我设置class redLabel 它不会解释这一点并使标签变为红色 我必须在表格中使用内联样式才能正常工作 有任何想法吗
  • swift 在 iPhone 上截图只有白色背景

    一些背景 我只是想在 swift 中使用 xcode 6 beta 7 做一个简单的程序 以便在按下按钮后对 iPhone 进行屏幕截图 它是在 SpiteKit 和游戏场景中完成的 背景是随机 png 图像和 hello world 默认
  • 使用“cpan”安装 Perl 模块时如何避免 sudo?

    我已将 Perl 从源代码安装到 usr local 中 并相应地调整了我的路径 如下布莱恩 福伊的建议在这里 我确信我遗漏了一些东西 但是 现在我尝试使用 cpan 命令安装东西 但它失败了 因为它无法写入 usr local 我必须使用
  • 对运算符+和/或运算符+=使用移动语义是否有意义?

    我想知道在重载运算符 和 或运算符 时 在什么情况下使用移动语义才有意义 尽管它被解释为这个问题我怎么能做到这一点 我无法理解为什么我要这样做 让我们考虑运算符 如果我只是通过引用传递右侧对象并对左侧对象进行适当的更改 则无论如何都不会产生
  • 在 python 中使用 .pyc 文件时是否有任何性能提升?

    我们可以编写一段python代码并将其放入已经编译好的 pyc 文件中并使用它 我想知道在性能方面是否有任何增益 或者它只是一种对代码进行分组的模块化方式 多谢 在您的计划过程中没有任何性能提升 它只会缩短启动时间 从 pyc 或 pyc
  • 如何从 T-Sql 中的日期时间中提取日期?

    我正在 SQL Server 2005 中针对日期时间列运行选择 我只能从此日期时间列中选择日期吗 最好的办法是 SELECT DATEADD day DATEDIFF Day 0 ADate 0 这是因为 SQL Server 在内部将所
  • 从字符串中查找并提取数字

    我需要查找并提取字符串中包含的数字 例如 从这些字符串 string test 1 test string test1 1 test string test2 test 99 我怎样才能做到这一点 d 是整数的正则表达式 所以 System
  • 如何在满足严格弱排序的n元组上定义operator<

    这个问题在这里已经有答案了 如何定义operator lt 在 n 元组上 例如在 3 元组上 使其满足严格弱序概念 我知道 boost 库有正确定义的元组类operator lt 但由于某些原因我无法使用它 严格弱序 这是一个数学术语 用