Sobes.tech
Назад к вопросам
Junior — Middle
86

Какие условия должен соблюдать компаратор 'меньше' для корректной работы алгоритма std::sort?

Компании, где спрашивали
Телкор

Ответ от нейросети

sobes.tech AI

Компаратор "меньше" (less-than comparator), используемый в std::sort, должен удовлетворять следующим условиям, чтобы сортировка была корректной:

  1. Транзитивность: Если a < b и b < c, то a < c.
  2. Антисимметричность: Если a < b истинно, то b < a должно быть ложно.
  3. Нерефлексивность: Ни для какого a не должно быть a < a.

Другими словами, компаратор должен задавать строгий слабый порядок (strict weak ordering). Это гарантирует, что алгоритм сортировки сможет корректно упорядочить элементы.

Пример компаратора для сортировки вектора целых чисел по возрастанию:

bool less(int a, int b) {
    return a < b;
}

std::sort(vec.begin(), vec.end(), less);

Если компаратор нарушает эти свойства, поведение std::sort неопределено.