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




// 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 < < ' : ' ' '; } }>

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




// 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.