Подтвердить что ты не робот

Разница между hash_map и unordered_map?

Недавно я обнаружил, что реализация хэш-карты в С++ будет называться unordered_map. Когда я посмотрел, почему они не просто используют hash_map, я обнаружил, что, по-видимому, существуют проблемы совместимости с реализацией hash_map, что unordered_map разрешает (http://en.wikipedia.org/wiki/Unordered_map_%28C%2B%2B%29). Страница wiki не дает гораздо больше информации, поэтому я задаюсь вопросом, знает ли кто-нибудь из проблем с hash_map, что unordered_map разрешает

4b9b3361

Ответ 1

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

Начиная с С++ 11 в стандартную библиотеку С++ добавлена ​​реализация хэш-таблицы. Было решено использовать альтернативное имя для класса, чтобы предотвратить конфликты с этими нестандартными реализациями и предотвратить непреднамеренное использование нового класса разработчиками, у которых hash_table в их коде.

Выбранное альтернативное имя unordered_map, которое действительно более наглядное, поскольку оно намекает на интерфейс карты классов и неупорядоченный характер его элементов.