logo

map vs unordered_map en C++

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 java
Sortida

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.