我有时structs在地图中使用小键作为键,因此我必须operator<为它们定义一个.通常,这最终看起来像这样:
struct MyStruct
{
A a;
B b;
C c;
bool operator<(const MyStruct& rhs) const
{
if (a < rhs.a)
{
return true;
}
else if (a == rhs.a)
{
if (b < rhs.b)
{
return true;
}
else if (b == rhs.b)
{
return c < rhs.c;
}
}
return false;
}
};
Run Code Online (Sandbox Code Playgroud)
这看起来非常冗长且容易出错.有没有更好的方法,或一些简单的方法来自动定义operator<一个struct或class?
我知道有些人喜欢使用类似的东西memcmp(this, &rhs, sizeof(MyStruct)) < 0,但是如果成员之间存在填充字节,或者如果char在null终止符之后存在可能包含垃圾的字符串数组,则这可能无法正常工作.