Est-il un avantage de l'utilisation de la carte sur unordered_map en cas de trivial clés?

Une récente parler unordered_map en C++ me suis rendu compte que je devrais utiliser unordered_map pour la plupart des cas où j'ai utilisé map avant, en raison de l'efficacité de la recherche ( amorti O(1) vs O(log n) ). La plupart du temps j'utilise une carte, j'utilise soit int ou std::string comme le type de la clé; c'est pourquoi je n'ai pas de problèmes avec la définition de la fonction de hachage. Plus j'y pensais, plus je me rends compte que je ne peux pas trouver une raison de l'utilisation d'un std::map sur une std::unordered_map dans le cas de clés avec les types simples-j'ai pris un coup d'oeil au niveau des interfaces, et n'a pas trouvé de différences significatives qui aurait un impact sur mon code.

D'où la question: est-il vraiment de raison d'utiliser std::map sur std::unordered map dans le cas de types simples comme les int et std::string?

Je me demande à partir d'un strict point de vue programmation, je sais qu'il n'est pas pleinement considéré comme la norme, et que cela peut poser des problèmes avec le portage.

Aussi, j'attends que l'une des bonnes réponses peut être "il est plus efficace pour les petits ensembles de données" en raison d'une moindre frais généraux (est-ce vrai?) - donc j'aimerais restreindre la question au cas où le montant des touches est non-trivial (>1 024).

Edit: euh, j'ai oublié l'évidence (merci GMan!) -- oui, les cartes sont commandés, bien sûr, je sais qu', et je suis à la recherche pour d'autres raisons.

  • J'aime poser cette question dans les entretiens: "Quand est-tri rapide mieux que la bulle de tri?" La réponse à la question donne un aperçu de l'application pratique de la théorie de la complexité et non de la simple noir et blanc des déclarations telles que O(1) est meilleure que O(n) ou O(k) est équivalent à O(logn) etc....
  • Je pense que tu voulais dire "quand est-bulle-sort mieux que le tri rapide" 😛
  • Serait un pointeur intelligent être une banale clé?
  • Voici l'un des cas dans lesquels la carte est avantageuse: stackoverflow.com/questions/51964419/...