У меня есть класс с несколькими числовыми полями, такими как:Реализация оператора <в C++
class Class1 {
int a;
int b;
int c;
public:
// constructor and so on...
bool operator<(const Class1& other) const;
};
мне нужно использовать объекты этого класса в качестве ключа в std::map
. Поэтому я реализую operator<
. Какова самая простая реализация operator<
для использования здесь?
EDIT: Значение <
можно считать таким образом, чтобы гарантировать уникальность тех пор, пока какой-либо из полей не равны.
EDIT 2:
Упрощенная реализация:
bool Class1::operator<(const Class1& other) const {
if(a < other.a) return true;
if(a > other.a) return false;
if(b < other.b) return true;
if(b > other.b) return false;
if(c < other.c) return true;
if(c > other.c) return false;
return false;
}
Вся причина этого поста только что я обнаружил, что выше реализация слишком многословным. Там должно быть что-то более простое.
Вы должны сначала решить, что «<» означает, что для случая, когда несколько членов представляют инвариант класса. –