Оператор компаратора для объектов, чтобы сохранить его на карте

У меня есть следующий класс

class Person
{
string name;
string section;
};

Какая может быть реализация оператора сравнения для сохранения этого на карте?

-2

Решение

Одна из возможных реализаций:

class Person
{
string name;
string section;
};

bool operator<(const Person& lhs, const Person& rhs) {
return lhs.name < rhs.name;
}

Это будет сортировать лексикографически по имени. Возможны другие заказы, в зависимости от ваших потребностей. Ваш вопрос немного неясен, потому что обычно вам нужно два типа для карты, тип ключа и тип значения. Сравнение требуется только для типа ключа, а не для типа значения.

3

Другие решения

Наверное, что-то вроде

#include <tuple> // for std::tie

struct ComparePersons
{
bool operator()(const Person& lhs, const Person& rhs) const
{
return std::tie(lhs.name, lhs,section) < std::tie(rhs.name, rhs.section);
}
};

Это выполняет лексикографическое меньше чем сравнение, используя name первый и section второй. Очевидно, это предполагает, что вы заинтересованы в использовании Persons как ключи карты.

3

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector