operador <comparando vários campos
Eu tenho o seguinte operador <que é suposto classificar primeiro por um valor e, em seguida, por outro valor:
inline bool operator < (const obj& a, const obj& b)
{
if(a.field1< b.field1)
return true;
else
return a.field2 < b.field2;
}
Eu tenho a sensação de que isso é incorreto e que você não pode fazer isso sem outro terceiro teste de comparação nas variáveis de membros, mas não consigo encontrar nenhum exemplo onde isso não funcione. Então, se isso realmente classificar como esperado? obrigado
edit: eu teria codificado como:
inline bool operator < (const obj& a, const obj& b)
{
if(a.field1< b.field1)
return true;
else if(a.field1> b.field1)
return false;
else
return a.field2 < b.field2;
}
Existem diferenças? Estou perguntando porque sei que o meu é correto por experiência, mas também mais longo do que o primeiro