Следует использовать HashMap, когда их основными требованиями являются получение или изменение данных только на основе ключа. Например, в веб-приложениях имя пользователя хранится в виде ключа, а данные пользователя хранятся в виде значения в HashMap для более быстрого поиска пользовательских данных, соответствующих имени пользователя.
Вход не может быть хэширован (например, вы получили двоичные двоичные объекты и не знаете, какие биты там значительны, но у вас есть функция int cmp (const T &, const T &), которую вы можете использовать для std :: map), или
доступные / возможные функции ha sh очень склонность к столкновениям, или
, которую вы хотите избежать наихудших падений производительности для:
обработки большого количества элементов * ha sh (возможно, "спроектированных" кем-то, пытающимся взломать sh или замедлите работу вашего программного обеспечения)
изменив размер таблицы ha sh: если не указано, что она достаточно велика (что может быть расточительным и медленным при чрезмерном использовании памяти), большинство реализаций перерастет массивы, которые они используя для хеш-таблицы время от времени выделяйте больший массив и копируйте содержимое: это может привести к тому, что указанные вставки c, которые приводят к тому, что перефразирование будет намного медленнее, чем нормальное поведение O (1), даже если среднее значение все еще равно O (1) ); если вам нужно более последовательное поведение во всех случаях, то что-то вроде двоичного дерева баланса может служить
, ваши шаблоны доступа довольно специализированы (например, часто работают с элементами с ключами, которые находятся "рядом" в некотором конкретном c виде порядок), так что эффективность кэширования лучше для других моделей хранения, которые держат их рядом в памяти (например, отсортированные по корзине элементы), даже если вы не совсем полагаетесь на порядок сортировки, например, для итерации