Назад к вопросам
Junior — Middle
86
Какие условия должен соблюдать компаратор 'меньше' для корректной работы алгоритма std::sort?
Компании, где спрашивали
Телкор
Ответ от нейросети
sobes.tech AI
Компаратор "меньше" (less-than comparator), используемый в std::sort, должен удовлетворять следующим условиям, чтобы сортировка была корректной:
- Транзитивность: Если
a < bиb < c, тоa < c. - Антисимметричность: Если
a < bистинно, тоb < aдолжно быть ложно. - Нерефлексивность: Ни для какого
aне должно бытьa < a.
Другими словами, компаратор должен задавать строгий слабый порядок (strict weak ordering). Это гарантирует, что алгоритм сортировки сможет корректно упорядочить элементы.
Пример компаратора для сортировки вектора целых чисел по возрастанию:
bool less(int a, int b) {
return a < b;
}
std::sort(vec.begin(), vec.end(), less);
Если компаратор нарушает эти свойства, поведение std::sort неопределено.