Question

J'ai récemment découvert que l'implémentation de la table de hachage en C ++ s'appellera unordered_map .

Quand j'ai cherché pourquoi ils n'utilisaient pas hash_map , j'ai découvert qu'il y avait apparemment des problèmes de compatibilité avec la mise en oeuvre de hash_map que unordered_map résolu ( ici ).

Cette page wiki ne donnant pas beaucoup plus d'informations, je me demandais si quelqu'un connaissait certains des problèmes liés à hash_map que unordered_map résolvait.

Était-ce utile?

La solution

Comme il n'y avait pas de table de hachage définie dans la bibliothèque standard C ++, différents implémenteurs des bibliothèques standard fourniraient une table de hachage non standard souvent nommée hash_map . Étant donné que ces implémentations n’ont pas été écrites conformément à une norme, elles présentaient toutes de subtiles différences en termes de fonctionnalités et de garanties de performances.

À partir de C ++ 11 , une implémentation de table de hachage a été ajoutée à la bibliothèque standard C ++ standard. Il a été décidé d'utiliser un autre nom pour la classe afin d'éviter les collisions avec ces implémentations non standard et d'empêcher l'utilisation par inadvertance de la nouvelle classe par les développeurs dont hash_table était présent dans leur code.

Le nom alternatif choisi est unordered_map , qui est vraiment plus descriptif, car il fait allusion à l'interface de la carte de la classe et au caractère non ordonné de ses éléments.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top