Сортировка имен по номерам правильно - PullRequest
3 голосов
/ 21 сентября 2009

Для сортировки имен предметов я хочу правильно поддерживать числа. то есть это:

1 Hamlet
2 Ophelia
...
10 Laertes

вместо

1 Hamlet
10 Laertes
2 Ophelia
...

Кто-нибудь знает о функторе сравнения, который уже поддерживает это?
(то есть предикат, который может быть передан std::sort)

У меня в основном есть две модели для поддержки: начальный номер (как указано выше) и номер в конце, аналогично проводнику:

Dolly
Dolly (2)
Dolly (3)

(Полагаю, я мог бы решить эту проблему: сравнивать по символам и обрабатывать числовые значения по-разному. Однако, это, вероятно, нарушило бы юникод-коллаж и тому подобное)

Ответы [ 2 ]

5 голосов
/ 21 сентября 2009

Это называется буквенно-цифровой сортировкой.
Проверьте эту ссылку: Алфавитный алгоритм

0 голосов
/ 24 ноября 2009

Я думаю, что вы можете использовать объект пары, а затем сделать вектор> и затем отсортировать этот вектор. Пары сравниваются по первым элементам. Таким образом, вы можете получить желаемый вид.

...