У меня есть имя класса, определенного в C ++:
class name{
public:
int range;
int num;
char type;
string n;
};
Как мне алфавит массив, который содержит имена на основе string n
?
Одним из способов является перегрузка operator<
сравнить его n
с другим объектом (того же типа) n
, Если name
определяется его n
переменная и n
определяет его порядок, это может быть подходящим решением.
Для сортировки в библиотеке алгоритмов есть функции для этого.
Перегрузка будет выглядеть примерно так:
bool operator<(const name &o) const {
return n < o.n;
}
Также было бы неплохо определить остальные пять операторов сравнения. Равенство достаточно простое, тогда все остальное можно определить с точки зрения <
а также ==
bool operator==(const name &o) const {
return n == o.n;
}
std::sort
необязательно принимает предикат, который может быть функцией, лямбда-выражением или чем-то еще, что можно вызвать. Здесь вы можете просто написать простую функцию bool orderByName(name const& A, name const& B)
,