繁体   English   中英

为什么我们需要 C++ 中的 spaceship <=> 运算符?

[英]Why do we need the spaceship <=> operator in C++?

为什么我们在 C++ 中需要这样的运算符,它在现代 C++ 编程中有何用处? 任何可以应用它的真实世界代码示例都会有所帮助。

这个问题旨在了解现实世界中的实际应用,而无需阅读 Herb Sutter 的冗长提案。 虽然没有冒犯这个提议。

我会给你三点动力,就在我的脑海里:

  1. 这是所有其他比较运算符(对于全序域)的通用概括: >>===<=< 使用<=> (宇宙飞船),您可以以完全通用的方式实现这些其他操作中的每一个。
  2. 对于字符串,它相当于 C 标准库中的旧strcmp()函数。 所以 - 对于字典顺序检查很有用,例如向量或列表或其他有序容器中的数据。
  3. 对于整数,这就是硬件所做的:在x86x86_64比较 a 和 b ( CMP RAX, RBX ) 基本上就像减法 ( SUB RAX, RBX ) 除了RAX实际上没有改变,只有标志受到影响,所以你可以使用“在等于/不等于/大于/小于/等上跳转”。 (JE/JNE/JGT/JLT 等)作为下一条指令。 CMP应该被认为是“宇宙飞船比较”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM