В вопросе Поиск самой длинной строки я увидел слово компаратор, но поскольку я мало понимаю в программировании, то я не знаю что это может быть. Объясните, пожалуйста.
Ответ
Ну, например, как выполняется сортировка?
sort(v.bein(),v.end());
При этом сортируемые элементы сравниваются просто с помощью оператора <. Вот он и есть компаратор по умолчанию. Но если вы хотите какую-то очень хитрую сортировку, то это делается так
sort(v.bein(),v.end(), comp);
где comp и есть компаратор - т.е. функция, функциональный объект, лямбда-выражение - словом, которому можно передать два элемента для сравнения.
Например, по умолчанию сортировка строк будет сравнивать их содержимое.
А сортировка
sort(v.bein(),v.end(),
// Вот это лямбда-выражение и есть компаратор:
[](const string& a, const string& b){ return a.length() < b.length(); }
);
будет сортировать строки по длине.
То же самое можно записать и с обычной функцией:
// Здесь компаратор - функция comp:
bool comp(const string& a, const string& b)
{
return a.length() < b.length();
}
sort(v.bein(),v.end(), comp);
Комментариев нет:
Отправить комментарий