Когда string.compare перестает сравнивать? (Станд)

Я знаю, что метод сравнения будет возвращать целочисленное значение, обозначающее что-то вроде разницы между двумя строками (или 0 в случае совпадения). Мой вопрос: в случае обнаружения несоответствия, останавливается ли сравнение при несоответствии или он завершается, пока не будет указан?

Это зависит от компилятора или это стандарт? Я в настоящее время использую GCC 4.1.2

1

Решение

Ну, стандарту все равно, но результат сравнения — стандарт заботится только об этом — полностью зависит от первого несовпадающего символа. Поэтому сравнивать остальные было бы бессмысленно для любой реализации, за исключением, возможно, еще нескольких символов, если проще обращаться с кешами или размерами слов платформы.

3

Другие решения

Не указано

Стандарт гласит, что rhs.compare(lhs) эквивалентно char_traits::compare(&rhs[0], &lhs[0], min(rhs.size(), lhs.size()), char_traits::compare описывается, чтобы отбросить значения сравнений символов после несоответствия, но будет ли детально прочитано или нет, более подробно это не рассматривается.

1