Une récente discussion unordered_mapen C ++ m'a fait réaliser que je devrais utiliser unordered_mapdans la plupart des cas où je l'ai utilisé mapauparavant, en raison de l'efficacité de la recherche ( O (1) amorti vs O (log n) ). La plupart du temps, j'utilise une carte, j'utilise soit intou std::stringcomme type de clé; par conséquent, je n'ai aucun problème avec la définition de la fonction de hachage. Plus j'y réfléchissais, plus je me rendais compte que je ne trouvais aucune raison d'utiliser un std::mapsur un std::unordered_mapdans le cas de clés avec des types simples - j'ai jeté un coup d'œil aux interfaces, et je n'ai trouvé aucun des différences importantes qui auraient un impact sur mon code.
D' où la question: est - il une vraie raison d'utiliser std::mapplus std::unordered_mapdans le cas des types simples comme intet std::string?
Je demande d'un point de vue strictement programmatique - je sais que ce n'est pas entièrement considéré comme standard et que cela peut poser des problèmes de portage.
De plus, je m'attends à ce que l'une des bonnes réponses soit «c'est plus efficace pour des ensembles de données plus petits» en raison d'un surcoût plus petit (est-ce vrai?) - je voudrais donc limiter la question aux cas où la quantité de clés n'est pas trivial (> 1 024).
Edit: duh, j'ai oublié l'évidence (merci GMan!) - oui, les cartes sont commandées bien sûr - je le sais, et je cherche d'autres raisons.

