Функция, заданная для std::sort
, должна вызывать строгое слабое упорядочение элементов в диапазоне итераторов, см. std::sort
, Сравнить требования и строгий слабый порядок в Википедии .
Ваш isShorter
вызывает порядок, который не является строгим. В частности, он не обладает свойством, которое isShorter(x, x) == false
для всех x
.
. Проблема в том, что вы возвращаете true
, когда не можете найти ни одну строку до или после другой в заказе, но вы должны вернуть false
.
Функция должна моделировать <
, а не <=
.
Неясно, является ли это причиной ошибки сегментации, поскольку вы не t приведен пример полного кода, но нарушение требований std::sort
приводит к неопределенному поведению.