新增运算符 <=>
满足:
- 若 a<b,则
(a<=>b)
<0。 - 若 a>b,则
(a<=>b)
>0。 - 若 a=b,则
(a<=>b)
=0。
重载此运算符后,就可以直接使用<
, >
, <=
, >=
几种运算符,但请注意若要使用 ==
和 !=
仍需再写一个函数:
struct T{
int x,y;
T(int _x=0,int _y=0):x(_x),y(_y){}
auto operator<=>(const T&_)const{
return x-_.x;
}
}a(1,3),b(2,4);
if(a<b)cout<<"a<b\n";//OK,output: a<b
if(a==b)cout<<"a==b\n";//CE not operator==