Страницы

Поиск по вопросам

среда, 12 декабря 2018 г.

Что такое компаратор?

В вопросе Поиск самой длинной строки я увидел слово компаратор, но поскольку я мало понимаю в программировании, то я не знаю что это может быть. Объясните, пожалуйста.


Ответ

Ну, например, как выполняется сортировка?
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);

Комментариев нет:

Отправить комментарий