Definir operador <para una estructura
A veces uso pequeñostructs
como claves en los mapas, así que tengo que definir unoperator<
para ellos. Por lo general, esto termina pareciéndose a esto:
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;
}
};
Esto parece muy detallado y propenso a errores. ¿Hay una mejor manera, o alguna manera fácil de automatizar la definición deoperator<
parastruct
oclass
?
Sé que a algunas personas les gusta usar algo comomemcmp(this, &rhs, sizeof(MyStruct)) < 0
, pero esto puede no funcionar correctamente si hay bytes de relleno entre los miembros, o si haychar
matrices de cadenas que pueden contener basura después de los terminadores nulos.