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