оператор <сравнение нескольких полей
У меня есть следующий оператор & lt; который должен сортировать сначала по значению, а затем по другому значению:
inline bool operator < (const obj& a, const obj& b)
{
if(a.field1< b.field1)
return true;
else
return a.field2 < b.field2;
}
У меня такое чувство, что это неправильно, и что вы не можете сделать это без другого третьего теста сравнения переменных членов, но я не могу найти ни одного примера, где это не работает. Так что же это на самом деле, как ожидалось? Спасибо
редактировать : Я бы закодировал это как:
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;
}
есть ли различия? Я спрашиваю, потому что я знаю, что это правильно из опыта, но также дольше, чем первый