三向比较运算符“ <=>”称为太空飞船运算符。飞船操作员确定两个对象甲和乙是否A B。太空船操作员或编译器可以为我们自动生成。同样,三向比较是一种可以在一个查询中给出整个关系的函数。传统上,strcmp()是这样的功能。给定两个字符串,它将返回一个整数,其中:
<0表示第一个字符串小于
== 0如果两者相等
如果第一个字符串较大,则> 0。
![e5822c9a1d3799ee215ce0dbee80094b.png](https://i-blog.csdnimg.cn/blog_migrate/9c72fdfdf65eb3f5397fd7e5aee36d0b.jpeg)
它可以给出三个结果之一,因此是三向比较。
![9adcd94309891efe5aa7b0c77405e7ff.png](https://i-blog.csdnimg.cn/blog_migrate/da34b1cb7827f15c39f6945bf99b3511.jpeg)
从上表可以看出,宇宙飞船算子是主要算子,即可以颠倒,可以用它来写对应的次要算子。
(A <=> B)如果A (A <=> B)> 0为真,如果A> B
(A <=> B)== 0如果A和B相等/相等。
下面是两个浮点变量的三向比较运算符的实现:
#include using namespace std; int main() { float A = -0.0; float B = 0.0; auto ans = A <= > B; if (ans < 0) cout << "-0 is less than 0"; else if (ans == 0) cout << "-0 and 0 are equal"; else if (ans > 0) cout << "-0 is greater than 0"; return 0; }
下面是两个向量的三向比较运算符的实现:
#include using namespace std; int main() { vector v1{ 3, 6, 9 }; vector v2{ 3, 6, 9 }; auto ans2 = v1 <= > v2; if (ans2 < 0) { cout << "v1 < v2" << endl; } else if (ans2 == 0) { cout << "v1 == v2" << endl; } else if (ans2 > 0) { cout << "v1 > v2" << endl; } return 0; }
输出:
![aa9b6c264d6042afc21b3640f12f285c.png](https://i-blog.csdnimg.cn/blog_migrate/42fb90bfdbf313e6356845f5d82f14db.jpeg)
注意:您应该下载足够的最新编译器以运行C ++ 20。
太空飞船运营商的需求:
- 这是所有其他比较运算符(对于完全排序的域)的通用概括:>,> =,==,<=,使用<=>,可以在用户定义的数据类型的情况下以完全通用的方式实现每个操作,例如一种结构,其中一个结构必须一个一个地定义另外六个比较运算符。
- 对于字符串,它等效于C标准库的旧strcmp()函数。因此,对于字典顺序检查(例如矢量或列表中的数据或其他有序容器中的数据)很有用。
领取学习资料及教程点击下方了解更多链接