BST est binaire Rechercher Arbre. Il est utilisé pour un dictionnaire. BST n'a pas de limites sur la structure, et donc une recherche / insertion / suppression est O (n) pire des cas.
Carte [sur stl] est aussi un dictionnaire, et est en fait un arbre rouge-noir [sur stl]. il est un type particulier de BST, qui a des limites sur les structures, à cause de cela, la recherche pire cas / insertion / suppression est O (logn).
hachage table de hachage est un autre type de dictionnaire, l'avantage d'une table de hachage [avec de bonnes fonctions de hachage] est O (1) temps moyen de recherche / supprimer / insérer. Cependant, le pire des cas est O (n), ce qui arrive si les éléments trop entrent en collision et / ou quand une nouvelle mouture est nécessaire [lorsque l' équilibrage de charge est trop élevée, on attribue un plus grand tableau, et ressasser tous les éléments est].
Essais sont spéciaux pour les chaînes. tous les ops sont O (S) où S est la longueur de la chaîne. c'est un avantage sur les autres [lorsqu'ils traitent avec des chaînes] est que vous devez lire la chaîne de toute façon, la complexité si , Mappar exemple, lorsqu'ils traitent avec des chaînes, est en fait O (S * n * logn).
quand utiliser?
un Map[ou tout autre arbre équilibré] devrait presque toujours être un meilleur choix alors régulièrement BST.
hash tableest un bon choix quand vous voulez peu de temps moyen, mais ne se soucient pas que certains temps , vous aurez la perte de performance due à ressasser, et les collisions peuvent se produire dans certains cas.
Trieest généralement un bon dictionnaire pour les chaînes.