问题标签 [compare]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 排序谓词的链接(例如,对于 std::sort)
您可以将函数指针、函数对象(或 boost lambda)传递给 std::sort 以定义要排序的容器元素的严格弱排序。
但是,有时(我已经打了好几次了),您希望能够链接“原始”比较。
一个简单的例子是,如果您正在对代表联系人数据的对象集合进行排序。有时你会想要排序
其他时间 还有其他时候.. ETC现在,您当然可以为每种情况编写一个额外的函数对象,但这违反了 DRY 原则——尤其是在每次比较不那么微不足道的情况下。
似乎您应该能够编写比较函数的层次结构 - 低级函数进行单一的、原始的比较(例如名字<名字),然后更高级别的函数连续调用低级函数(可能与&& 利用短路评估)来生成复合函数。
这种方法的问题在于 std::sort 采用二元谓词——谓词只能返回一个布尔值。因此,如果您正在编写它们,则无法判断“false”是否表示相等或大于。您可以使较低级别的谓词返回一个具有三种状态的 int - 但是您必须将它们包装在较高级别的谓词中,然后才能单独与 std::sort 一起使用。
总而言之,这些都不是无法克服的问题。它似乎比它应该的更难 - 并且肯定会邀请帮助库实现。
因此,有没有人知道任何可以在这里提供帮助的预先存在的库(特别是如果它是 std 或 boost 库) - 对此事有任何其他想法吗?
[更新]
正如一些评论中提到的 - 我已经开始编写自己的类实现来管理它。它相当小,一般来说可能有一些问题。但在此基础上,对于任何感兴趣的人,课程都在这里:
还有一些辅助函数(为了避免需要指定模板参数)在这里:
sql - 我可以比较 MySQL 枚举吗?
我有一个枚举:ENUM( 'alpha', 'beta', 'gamma', 'delta', 'omega' )
如果我按此列对表格进行排序,我会按照上面定义的正确顺序得到它们。
但是,我找不到选择其中一个子集的方法,例如 delta 之前的所有内容。仅使用WHERE status < 'delta'
返回 alpha 和 beta,而不是 gamma。似乎 MySQL 使用字符串比较,而不是枚举索引比较。
我可以使用索引号——即WHERE status < 4
——但它有点代码味道(幻数),如果我在枚举中插入新值可能会中断。
javascript - 正则表达式比较两个数字
我可以以某种方式比较正则表达式中的两个数字吗?我想要对 10-12 正确但对 12-10 不正确的正则表达式。我的意思是 10 必须小于 12。我想用 Javascript 来做。
.net - 使用 CompareTo 比较 .Net 版本实例无法按预期工作
.Net 中的 Version 类没有像我期望的那样实现 CompareTo 接口,它似乎以字母数字方式处理比较,而不是比较四个数字。也许不是错误,而是“功能”。
谁能解释一下为什么比较(以及标准的 <、= 和 > 运算符)不能像我在下面所期望的那样工作?
我知道人们已经为此做了自己的手动解决方法,我想知道这是设计使然还是应该起作用,我可能会做一些愚蠢的事情。
提前致谢
瑞安
更新:我做了一些微妙的愚蠢的事情,并将它们视为 IP 地址。例如; 1.1.3023.5364 大于 1.1.5 但 1.1.3023.5364 小于 1.1.5000。
sql - 在 SQL 中如何比较日期值?
使用 MySQL 语法并有一个包含如下行的表:
有没有办法做类似的事情:
我正在尝试,但并没有真正让它发挥作用。
c - 如何从 stdlib 为 qsort 编写比较函数?
我有一个结构:
这些结构的表:
我想做的是tab_pkt
按tab_pkt.alfa
and排序tab_pkt.r
:
哪里 porownaj 是一个比较函数,但是怎么写呢?这是我的“草图”:
windows - 用于区分 Windows 二进制文件的工具?
我们的 QA 团队希望根据构建之间的 EXE 和 DLL 实际更改来集中他们的测试。我们有一个不错的 svn 更改报告,但是源代码和更改后的二进制文件之间的关系并不总是很明显。我们比较的构建总是完全干净的构建,所以我们不能使用文件系统时间戳。我正在寻找用于比较 Windows(和 Windows CE)PE 二进制文件的工具,这些二进制文件将忽略嵌入的时间戳和其他杂乱无章的东西。对于生成可靠的“哪些二进制文件真正改变了”报告的工具或其他方法有什么建议吗?谢谢。
澄清:感谢到目前为止的答案,但我们无法通过直接的逐字节比较或比较校验和来生成报告,因为每次构建时所有文件看起来都不同,即使源没有改变,因为编译器插入的时间戳。问题是如何忽略误报。我认为拆解和比较的想法最接近我们的需要......
回答!Bindiff 正是我想要的。非常感谢。
file - 如何合并/比较文件忽略顺序?
我有两个不相同的属性文件,我需要找出不同之处。第二个文件按键排序。
有没有可以帮助我的工具?从我所见,每个合并工具都非常关心订单。
java - 比较 Java 中的现有数据条目
我有一个将键与字符串相关联的 HashMap,我需要将一些字符串相互比较。但是,某些字符串可能在也可能不在 HashMap 中。
示例:假设我有 4 个字符串,如果可能的话,我打算将它们相互比较,但其中只有 3 个最终出现在 HashMap 中。如何比较存在的字符串而不尝试将它们与不存在的字符串进行比较,并且不做一堆嵌套的 if 和 else?
编辑:Alohci 的解决方案既简单又快速,而且很有效。
mysql - MySQL 数据库的最佳更新方法
我已经阅读了类似问题的解决方案,但它们似乎都涉及脚本和额外的工具。我希望我的问题足够简单以避免这种情况。
所以用户上传下周数据的 csv。它被插入数据库,没问题。
但
一个小时后,他得到了每个人的反馈,并且必须做出相应的更新。他更新了 csv 并将其上传到数据库。
现在,我正在使用的系统检查该周的数据是否已经存在,如果存在,则从数据库中提取所有数据,脚本会找到差异并将它们发送出去,毕竟这样,旧数据的数据将被删除并用新数据替换。
显然,将其擦干净并重新输入数据要容易得多,但这不是最好的方法,尤其是在有大量更改或大量数据的情况下。但我必须知道为了发送警报做了哪些更改。但是我不想要事务日志,因为警报只需要发送一次,之后旧数据就没用了。
所以!
是否有一种聪明的方法可以将新数据与现有数据进行比较,仅获取已更改/删除/添加的行并进行这些更改?现在看来我可以进行更新,但是我不会就发生的变化得到任何回应...
谢谢!
快速编辑:
当前没有外键在使用。这很快就会改变,但不会有什么不同,因为外键只会指向数据影响的对象,因此不需要更改。就主键而言,这确实带来了一些困境:
有问题的数据是每个人的工作时间表。因此,每个班次都有一个密钥会很好(对于这个时间表的特定应用,而不是简单的输出)。但问题是,假设 user1 周一迟到了。迟到记录在一个单独的表中,并使用 shift 键与班次相关联。但是,如果在星期二需要对已经进行的一周进行一些更改,我担心要确保数据库中的所有条目已经发生(因此可能具有不应该发生的关联)将变得太困难被破坏)将在此过程中重新键入。不幸的是,它并不像只更新当前时间之后发生的所有事件那么简单,因为这会给上传的人增加工作量(从而使其不那么有市场)。基本上,他们在一个程序上制定时间表,将其导出为 CSV,然后将其上传到需要该数据的所有 Web 应用程序的网页上。因此,每次导出整个一周并上传它时,他们(并且对每个相关人员的压力都较小)执行相同的例程变得容易得多。
所以我最关心的是让上传脚本在两端尽可能智能。尝试查找更改不会变得臃肿,无论输入如何,它都可以找到更改,并且没有任何未更改的数据有被重新键入的风险。
这是一个相关的问题:
还有一个:
我真的很想知道这种数据通常是如何处理/接近的,而不是上面的具体答案。
再次谢谢你。