operator <porównywanie wielu pól
Mam następujący operator <, który ma najpierw sortować według wartości, a następnie inną wartość:
inline bool operator < (const obj& a, const obj& b)
{
if(a.field1< b.field1)
return true;
else
return a.field2 < b.field2;
}
Mam przeczucie, że jest to nieprawidłowe i że nie można tego zrobić bez kolejnego trzeciego testu porównawczego zmiennych zmiennych, ale nie mogę znaleźć żadnego przykładu, w którym to nie działa. Więc czy to naprawdę sortuje zgodnie z oczekiwaniami? dzięki
edytuj: kodowałbym to jako:
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;
}
czy są jakieś różnice? Pytam, ponieważ wiem, że mój jest poprawny z doświadczenia, ale także dłuższy niż pierwszy