Требования к сложности для unordered_
-контейнеров, установленные стандартом C ++, по существу не оставляют много места для реализации, которая должна быть своего рода хеш-таблицей.Стандарт был написан с полным пониманием того, что эти структуры данных уже были развернуты большинством поставщиков в качестве расширения.
Поставщики компиляторов обычно называют эти контейнеры "хэш-карта" или "хэш-набор", что вам и нужновероятно, имеется в виду (в стандарте нет буквального std::hash_set
, но я думаю, что он есть в GCC в отдельном пространстве имен и аналогично для других компиляторов).
Когда был написан новый стандарт, авторыЯ хотел избежать возможной путаницы с существующими библиотеками расширений, поэтому они пошли на имя, которое отражает типичное мышление C ++: говорите, что это такое, а не как это реализовано.Неупорядоченные контейнеры, ну, неупорядоченные .Это означает, что вы получаете меньше от них по сравнению с заказанными контейнерами, но эта уменьшенная утилита предоставляет вам более эффективный доступ.
В зависимости от реализации, hash_set, Boost-unordered, TR1-unordered и C ++ 11-unordered willбыть очень похожим, если не идентичным.