C++20三向比较运算符<=>基础
请介绍C++20三向比较运算符<=>(太空船运算符)的语法和返回值类型。
回答
专业代码师
<=>比较两个值,返回比较类别类型:
struct Point {
int x, y;
auto operator<=>(const Point&) const = default; // 自动生成所有比较运算符
};
返回值类型:
- std::strong_ordering:强序,可替代性(相等即不可区分),值
less/equal/greater - std::weak_ordering:弱序,等价不等同于相等(如大小写不敏感字符串)
- std::partial_ordering:偏序,允许不可比较(如浮点数NaN),值
less/equal/greater/unordered
= default时编译器按成员声明顺序逐成员比较,并自动生成< <= > >= == !=运算符。