Prérequis : std :: carte , std :: unordered_map
En matière d'efficacité, il existe une énorme différence entre les cartes et les cartes non ordonnées.
Nous devons connaître le fonctionnement interne des deux pour décider lequel utiliser.
Différence :
| map | unordered_map --------------------------------------------------------- Ordering | increasing order | no ordering | of keys(by default) | Implementation | Self balancing BST | Hash Table | like Red-Black Tree | search time | log(n) | O(1) ->Moyenne | | O(n) -> Temps d'insertion dans le pire des cas | log(n) + Rééquilibrer | Identique à la recherche Heure de suppression | log(n) + Rééquilibrer | Identique à la recherche>
Utilisez std :: map quand
- Vous avez besoin de données ordonnées.
- Vous devrez imprimer/accéder aux données (dans l'ordre trié).
- Vous avez besoin d'un prédécesseur/successeur d'éléments.
- Voir les avantages de BST par rapport à Hash Table pour plus de cas.
RPC
comment vérifier la taille de l'écran
// CPP program to demonstrate use of std::map> #include> int> main()> {> >// Ordered map> >std::map<>int>,>int>>commander ;> >// Mapping values to keys> >order[5] = 10;> >order[3] = 500;> >order[20] = 100;> >order[1] = 1;> >// Iterating the map and> >// printing ordered values> >for> (>auto> i = order.begin(); i> >!= order.end(); i++) {> >std::cout << ' : ' '
'; } }> |
>
10 sur 100,00
>Sortir
1 : 1 3 : 500 5 : 10 20 : 100>
Utilisez std :: unordered_map lorsque
fmoviez
- Vous devez compter certaines données (exemple – chaînes) et aucun classement n’est requis.
- Vous avez besoin d'un accès à un seul élément, c'est-à-dire pas de traversée.
RPC
qui a fait l'école
// CPP program to demonstrate use of> // std::unordered_map> #include> int> main()> {> >// Unordered map> >std::unordered_map<>int>,>int>>commander ;> >// Mapping values to keys> >order[5] = 10;> >order[3] = 500;> >order[20] = 100;> >order[1] = 1;> >// Iterating the map and> >// printing unordered values> >for> (>auto> i = order.begin();> >i != order.end(); i++)> >{> >std::cout << ' : ' '
'; } }> |
>
>Sortir
1 : 1 20 : 100 3 : 500 5 : 10>
Voyons les différences sous forme de tableau - :
| carte | carte_non ordonnée | |
| 1. | la carte est définie dans le fichier d'en-tête #include | unordered_map est défini dans le fichier d'en-tête #include |
| 2. | Il est mis en œuvre par arbre rouge-noir . | Il est implémenté à l'aide d'une table de hachage. |
| 3. | C'est lent. | C'est rapide. |
| 4. | Complexité temporelle pour les opérations est O (log N) | La complexité temporelle des opérations est O(1) |
| 5. | map est utilisé pour stocker des éléments sous forme de paires clé-valeur, triés par clé. | unordered_map est utilisé pour stocker des éléments sous forme de paires clé-valeur dans un ordre non trié. |