Вопрос

Недавно я обнаружил, что реализация хеш-карты на C++ будет называться unordered_map.

Когда я посмотрел, почему они просто не использовали hash_map, я обнаружил, что, видимо, есть проблемы совместимости с реализацией hash_map что unordered_map решает (подробнее об этом здесь).

Эта вики-страница не дает больше информации, поэтому мне интересно, знал ли кто-нибудь о некоторых проблемах с hash_map что unordered_map решает.

Это было полезно?

Решение

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top