Forudsætning: std::kort , std::uordnet_kort
Når det kommer til effektivitet, er der stor forskel på kort og uordnede kort.
Vi skal kende begges interne arbejde for at beslutte, hvilken der skal bruges.
Forskel:
| 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) ->Gennemsnit | | O(n) -> Worst Case Indsættelsestid | log(n) + Rebalance | Samme som søgning Sletningstid | log(n) + Rebalance | Samme som søgning>
Brug std::map when
- Du skal bruge bestilte data.
- Du skal udskrive/ få adgang til dataene (i sorteret rækkefølge).
- Du har brug for forgænger/efterfølger af elementer.
- Se fordelene ved BST frem for Hash Tabel for flere sager.
CPP
i.næste 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 << ' : ' '
'; } }> |
hurtig sortering java
>
>
java har næsteProduktion
1 : 1 3 : 500 5 : 10 20 : 100>
Brug std::unordered_map når
- Du skal holde optælling af nogle data (Eksempel – strenge), og ingen bestilling er påkrævet.
- Du skal have adgang til et enkelt element, dvs. ingen gennemgang.
CPP
gimp gem som jpeg
// 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 << ' : ' '
'; } }> |
>
>Produktion
1 : 1 20 : 100 3 : 500 5 : 10>
Lad os se forskellene i en tabelform -:
| kort | uordnet_kort | |
| 1. | kort er defineret i #include header-fil | unordered_map er defineret i #include header-fil |
| 2. | Det er implementeret af rød-sort træ . | Det implementeres ved hjælp af hash-tabel. |
| 3. | Det er langsomt. | Det er hurtigt. |
| 4. | Tidskompleksitet for operationer er O(log N) | Tidskompleksitet for operationer er O(1) |
| 5. | map bruges til at gemme elementer som nøgle-værdipar i rækkefølge sorteret efter nøgle. | unordered_map bruges til at gemme elementer som nøgle-værdipar i ikke-sorteret rækkefølge. |