Requisit previ: std::mapa , std::unordered_map
Quan es tracta d'eficiència, hi ha una gran diferència entre els mapes i els mapes no ordenats.
Hem de conèixer el funcionament intern de tots dos per decidir quin s'ha d'utilitzar.
Diferència:
| 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) ->Mitjana | | O(n) -> Temps d'inserció del pitjor cas | log(n) + Reequilibri | Igual que la cerca Hora d'eliminació | log(n) + Reequilibri | Igual que cerca>
Utilitzeu std::map quan
- Necessites dades ordenades.
- Hauríeu d'imprimir/accedir a les dades (en ordre ordenat).
- Necessiteu un predecessor/successor d'elements.
- Consulteu els avantatges de BST sobre Hash Table per a més casos.
CPP
on és la configuració del navegador
// CPP program to demonstrate use of std::map> #include> int> main()> {> >// Ordered map> >std::map<>int>,>int>>ordre;> >// 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 << ' : ' '
'; } }> |
protocol udp
>
>
què es connecta automàticament a javaSortida
1 : 1 3 : 500 5 : 10 20 : 100>
Utilitzeu std::unordered_map quan
- Heu de fer el recompte d'algunes dades (Exemple: cadenes) i no cal fer cap ordre.
- Necessiteu accés a un únic element, és a dir, sense travessa.
CPP
Javascript de mostra
// CPP program to demonstrate use of> // std::unordered_map> #include> int> main()> {> >// Unordered map> >std::unordered_map<>int>,>int>>ordre;> >// 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 << ' : ' '
'; } }> |
>
>Sortida
1 : 1 20 : 100 3 : 500 5 : 10>
Vegem les diferències en forma tabular -:
| mapa | mapa_desordenat | |
| 1. | El mapa es defineix al fitxer de capçalera #include | Unordered_map es defineix al fitxer de capçalera #include |
| 2. | Està implementat per arbre vermell-negre . | S'implementa mitjançant una taula hash. |
| 3. | És lent. | És ràpid. |
| 4. | Complexitat temporal per a les operacions és O(log N) | La complexitat temporal de les operacions és O(1) |
| 5. | map s'utilitza per emmagatzemar elements com a parells de claus i valors ordenats per clau. | Unordered_map s'utilitza per emmagatzemar elements com a parells clau i valor en ordre no ordenat. |