Есть ли какое-либо преимущество использования карты по unordered_map в случае тривиальных ключей?

Недавний разговор о unordered_map в C++ заставил меня понять, что я должен использовать unordered_map для большинства случаев, где я использовал map прежде, из-за эффективности поиска (амортизировал O (1) по сравнению с O (регистрируют n)). Большинство раз я использую карту, я использую также int или std::string как ключевой тип; следовательно, у меня нет проблем с определением хеш-функции. Чем больше я думал об этом, тем больше я пришел к пониманию, что не могу найти причину использования a std::map по a std::unordered_map в случае ключей с простыми типами - я смотрел на интерфейсы и не нашел существенных различий, которые повлияют на мой код.

Следовательно вопрос: есть ли любая настоящая причина для использования std::map std::unordered map в случае простых типов как int и std::string?

Я спрашиваю со строго точки зрения программирования - я знаю, что она не полностью рассмотрела стандарт, и что она может создать проблемы с портированием.

Кроме того, я ожидаю, что один из корректных ответов мог бы быть, "это более эффективно для меньших наборов данных" из-за меньших издержек (который верен?) - следовательно я хотел бы ограничить вопрос случаям, где сумма ключей нетривиальна (> 1 024).

Править: понятное дело я забыл очевидное (благодарит GMan!) - да, карты заказаны, конечно - я знаю, что, и ищу другие причины.

345
задан Kyle 25 July 2019 в 06:21
поделиться