Глядя на таблицу на http://msdn.microsoft.com/en-us/library/y1z022s1%28v=vs.80%29.aspx#_core_collection_shape_features
Я не вижу коллекцию MFC для этой цели.
В документации CMap на http://msdn.microsoft.com/en-us/library/s897094z%28v=vs.80%29.aspx также указано, что
"Возможно, вы думаете, что эта итерация является последовательной по значению ключа, а это не так. Последовательность найденных элементов неопределенна".
как я ожидал бы от того, что, как я полагаю, использует алгоритмы хэширования.
Что мне нужно, это словарь, который имеет следующие функции:
- Упорядочено (например, с помощью int) - Назначение: замена элементов порядка, а также их последующая последовательность, указанная
- Кажется, мне даже не нужно быть "настоящим ключом" - мне действительно не нужны эти сумасшедшие алгоритмы хэширования для быстрого доступа. И вопрос о доступе к элементам по ключу, кажется, мне сейчас это не нужно, но я могу только надежно ответить на это, когда начну его использовать.
- Не нужно быстро вставлять, удалять, обновлять и т.д.
- Не требуется быстрый поиск определенного элемента
- key unicity
Интересно, сколько раз я могу применить этот шаблон в реальных приложениях. Какое лучшее решение вы можете мне предложить?
Примечание. У меня была такая же проблема и на С# некоторое время назад. Решения для него также приветствуются. Если я правильно помню, SortedDictionary сортируется по ключу, поэтому он не подходит.
EDIT: Даже если было бы предпочтительнее - только ради того, чтобы не быть диссонантным с уже существующей базой кода - использовать вещь из MFC, это не обязательство. Поэтому вы можете предложить все, что захотите, если это стандартный С++.
EDIT2: для улучшения ясности: описание каждого элемента контейнера будет
{
int Unique NonNullable OrderIndex,
enum KeyEnum Unique NonNullable key,
enum ValueEnum NotUnique NonNullable value
}
Если он реализован как нечто вроде динамического массива, я действительно даже не забочусь о сохранении OrderIndex. Для этого мне действительно нужно только уникальное значение, указывающее относительное положение и возможность замены элементов позиции.
Спасибо заранее,
Сержиу