...каждый ключ я записала как индекс:ключ (т.е. например: "1:Nr."). Т.о. вне зависимости от расположения я теперь знаю, кто и за кем
А нет перспективы, что в дальнейшем добавятся еще ключи? Если придется что-то добавлять в середину, нумерация поедет, и будет не так уж просто восстановить статус-кво.
Мне кажется, тут
CMap используется не по назначению. Он задуман как ассоциативный массив, в котором обеспечивается быстрый доступ к значению, связанному с данным ключом. Хранение сортированных последовательностей - не его конек.
Я бы в данном случае использовал какой-либо контейнер, поддерживающий сортировку (вектор или список, смотря что должно делаться быстрее - поиск или вставка соответственно).
А вообще все это не совсем радует, если твое расположение элементов меняют без твоего ведома... Обидно...
Так они и не обещали никакой упорядоченности при хранении. Дописывать элементы в хвост в порядке поступления - значит сделать поиск очень медленным. Сортировать ключи в лексикографическом порядке - значит замедлить вставку. С основной задачей - ассоциированием значения с ключом -
CMap справляется блестяще, а большего с хэш-таблицы и не возьмешь.
Тут, кстати, еще такая проблема выплывает. В европейских языках (французском, немецком и т.д.) алфавиты каждый со своими вывихами, к латинским буквам добавляются всякие умляуты, диакритические знаки и прочая дребедень. Получается, что алфавитная сортировка не обеспечивается побайтным упорядочением литер, нужно делать сортировку с национальным акцентом. Поэтому сделать межкультурный контейнер с алфавитной сортировкой IMHO будет не столь просто.