Недавний разговор о unordered_map в C++ заставил меня понять, что я должен использовать unordered_map для большинства случаев, когда я использовал map раньше, из-за эффективности поиска (амортизированный O (1) и O (log n) )). В большинстве случаев я использую карту, в качестве типа ключа я использую либо int, либо std::string; следовательно, у меня нет проблем с определением хеш-функции. Чем больше я думал об этом, тем больше осознавал, что не могу найти никакой причины использовать std::map над std::unordered_map в случае ключей с простыми типами - я взглянул на интерфейсы, и не нашел каких-либо существенных различий, которые повлияют на мой код.
Отсюда вопрос: есть ли реальная причина использовать std::map вместо std::unordered map в случае простых типов, таких как int и std::string?
Я спрашиваю со строгой точки зрения программирования - я знаю, что это не полностью считается стандартом, и что это может создать проблемы с портированием.
Кроме того, я ожидаю, что один из правильных ответов может быть "он более эффективен для небольших наборов данных" из-за меньших издержек (это правда?) - поэтому я хотел бы ограничить вопрос случаями, когда количество Ключи нетривиальны (> 1 024).
Редактировать: да, я забыл очевидное (спасибо GMan!) - да, карты, конечно, заказаны - я знаю это, и ищу по другим причинам.

