Я столкнулся с проблемой всякий раз, когда пытался сортировать вектор объектов, что приводило к бесконечному циклу. Я использую пользовательскую функцию сравнения, которую я передал функции сортировки.C++ std :: vector std :: sort бесконечный цикл
Я смог исправить проблему, вернув false, когда два объекта были равны вместо true, но я не совсем понял решение. Я думаю, это потому, что моя функция сравнения нарушала это правило, как указано на cplusplus.com:
Сравнение функционального объекта, который, принимает два значения одного и того же типа , чем те, которые содержатся в диапазоне, возвращает истину, если первый аргумент предшествует второму аргументу в конкретным строгим слабым порядком его определяет и false в противном случае.
Может ли кто-нибудь предоставить более подробное объяснение?
http://www.sgi.com/tech/stl/StrictWeakOrdering.html –
Можете ли вы опубликовать свою функцию сравнения? – GWW
Какие еще объяснения вам нужны? Это определение очень ясно. Если 'A' должно появиться перед' B' в упорядоченной последовательности, тогда 'A' <' B' должно быть истинным. В противном случае это должно быть ложным. –