Страницы

Поиск по вопросам

пятница, 20 декабря 2019 г.

Зачем нужен контейнер std::map? В чем он обходит hash map?

#cpp #stl #map #хеширование


Зачем (в с++) существует контейнер map, если есть hash_map, который быстрее? Например,
std::map  чем лучше std::unordered_map'a?
    


Ответы

Ответ 1



Нет понятия «лучше» или «хуже», есть различные свойства контейнера. std::map держит данные в отсортированном по ключу виде, в отличие от std::unordered_map. Если вам нужно это свойство, вам нужен std::map. Если нет, достаточно и std::unordered_map. (Как следствие отсортированности, например, в std::map есть функция lower_bound, которой нет в std::unordered_map.)

Ответ 2



Как видно из самого названия контейнера std::unordered_map элементы этого контейнера не упорядочены. В то время как элементы контейнера std::map упорядочены в соответствии с ключом.

Ответ 3



Для hash_map можно задать hash функцию.

Комментариев нет:

Отправить комментарий