Priekšnosacījums: std::map , std::unordered_map
Runājot par efektivitāti, pastāv milzīga atšķirība starp kartēm un nesakārtotām kartēm.
Mums ir jāzina abu iekšējā darbība, lai izlemtu, kuru no tiem izmantot.
Atšķirība:
| 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) ->Vidēji | | O(n) -> Sliktākā gadījuma ievietošanas laiks | log(n) + līdzsvars | Tas pats, kas meklēšanā Dzēšanas laiks | log(n) + līdzsvars | Tas pats, kas meklēt>
Izmantojiet std::map, kad
- Nepieciešami pasūtītie dati.
- Jums būs jādrukā/jāpiekļūst datiem (šķirotā secībā).
- Jums ir nepieciešams elementu priekštecis/pēctecis.
- Vairāk gadījumu skatiet BST priekšrocības salīdzinājumā ar Hash Tabl e.
CPP
mainiet direktorija nosaukumu linux
// CPP program to demonstrate use of std::map> #include> int> main()> {> >// Ordered map> >std::map<>int>,>int>>pasūtījums;> >// 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 << ' : ' '
'; } }> |
java stīgu klase
>
>Izvade
strep c
1 : 1 3 : 500 5 : 10 20 : 100>
Izmantojiet std::unordered_map, kad
- Jums ir jāskaita daži dati (piemērs - virknes), un pasūtīšana nav nepieciešama.
- Jums ir nepieciešama viena elementa piekļuve, t.i., bez šķērsošanas.
CPP
java programmas paraugi
// CPP program to demonstrate use of> // std::unordered_map> #include> int> main()> {> >// Unordered map> >std::unordered_map<>int>,>int>>pasūtījums;> >// 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 << ' : ' '
'; } }> |
>
>Izvade
1 : 1 20 : 100 3 : 500 5 : 10>
Apskatīsim atšķirības tabulas veidā -:
| karte | unordered_map | |
| 1. | karte ir definēta #include galvenes failā | unordered_map ir definēts galvenes failā #include |
| 2. | To īsteno sarkanmelns koks . | Tas tiek īstenots, izmantojot hash tabulu. |
| 3. | Tas ir lēns. | Tas ir ātri. |
| 4. | Laika sarežģītība operācijām ir O(log N) | Operāciju laika sarežģītība ir O(1) |
| 5. | karte tiek izmantota, lai saglabātu elementus kā atslēgu, vērtību pārus, kas sakārtoti pēc atslēgas. | unordered_map izmanto, lai saglabātu elementus kā atslēgu, vērtību pārus nekārtotā secībā. |