Definindo operador <para uma estrutura
Às vezes uso pequenasstructs
como chaves nos mapas, e por isso tenho que definir umoperator<
para eles. Normalmente, isso acaba parecendo algo assim:
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;
}
};
Isso parece muito detalhado e propenso a erros. Existe uma maneira melhor ou alguma maneira fácil de automatizar a definição deoperator<
parastruct
ouclass
?
Eu sei que algumas pessoas gostam de usar algo comomemcmp(this, &rhs, sizeof(MyStruct)) < 0
, mas isso pode não funcionar corretamente se houver bytes de preenchimento entre os membros ou se houverchar
matrizes de string que podem conter lixo após os terminadores nulos.