23

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

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

4

1 回答 1

20

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

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