三路比较运算符 <=>

新增运算符 <=> 满足:

  • 若 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==

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部