logo

map vs unordered_map i C++

Forutsetning: std::kart , std::uordnet_kart
Når det kommer til effektivitet er det stor forskjell på kart og uordnede kart.
Vi må kjenne til det interne arbeidet til begge for å bestemme hvilken som skal brukes.

Forskjellen:



 | 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) ->Gjennomsnittlig | | O(n) -> Worst Case Innsettingstid | log(n) + Rebalanse | Samme som søk Slettingstid | log(n) + Rebalanse | Samme som søk>

Bruk std::map when

  • Du trenger bestilte data.
  • Du må skrive ut/få tilgang til dataene (i sortert rekkefølge).
  • Du trenger forgjenger/etterfølger av elementer.
  • Se fordelene med BST fremfor Hash Tabell e for flere tilfeller.

CPP

i.neste java








// CPP program to demonstrate use of std::map> #include> int> main()> {> >// Ordered map> >std::map<>int>,>int>>bestille;> >// 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 << ' : ' ' '; } }>

konverteringsstreng til dato

>

>

murer formel
Produksjon

1 : 1 3 : 500 5 : 10 20 : 100>

Bruk std::unordered_map når

  • Du må holde telling av noen data (eksempel – strenger) og ingen bestilling er nødvendig.
  • Du trenger tilgang til enkeltelementer, dvs. ingen kryssing.

CPP




nettsted som coomeet

// CPP program to demonstrate use of> // std::unordered_map> #include> int> main()> {> >// Unordered map> >std::unordered_map<>int>,>int>>bestille;> >// 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 << ' : ' ' '; } }>

>

>

Produksjon

1 : 1 20 : 100 3 : 500 5 : 10>

La oss se forskjellene i en tabellform -:

kart uordnet_kart
1. kartet er definert i #include header-fil unordered_map er definert i #include header-fil
2. Den er implementert av rød-svart tre . Det er implementert ved hjelp av hash-tabell.
3. Det er tregt. Det er raskt.
4. Tidskompleksitet for operasjoner er O(log N) Tidskompleksitet for operasjoner er O(1)
5. kart brukes til å lagre elementer som nøkkel, verdipar i rekkefølge sortert etter nøkkel. unordered_map brukes til å lagre elementer som nøkkel-verdipar i ikke-sortert rekkefølge.