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

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Есть ли какое-либо преимущество использования карты перед unordered_map в случае тривиальных ключей?

Сообщение Anonymous »

Недавний разговор о 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!) - да, карты заказываются, конечно, -- я это знаю и ищу другие причины.

Подробнее здесь: https://stackoverflow.com/questions/219 ... ivial-keys
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»