logo

map vs unordered_map programoje C++

Būtina sąlyga: std::žemėlapis , std::netvarkomas_žemėlapis
Kalbant apie efektyvumą, yra didžiulis skirtumas tarp žemėlapių ir netvarkingų žemėlapių.
Turime žinoti abiejų vidinį veikimą, kad nuspręstume, kurį iš jų naudoti.

Skirtumas:



 | 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) ->Vidutinis | | O(n) -> Blogiausias atvejis Įterpimo laikas | log(n) + Perbalansuoti | Tas pats kaip ir paieška Ištrynimo laikas | log(n) + Perbalansuoti | Tas pats kaip paieška>

Naudokite std::map kada

  • Jums reikia užsakytų duomenų.
  • Turėtumėte atsispausdinti / pasiekti duomenis (rūšiuota tvarka).
  • Jums reikia elementų pirmtako / įpėdinio.
  • Daugiau atvejų žr. BST pranašumus, palyginti su Hash Tabl e.

CPP

Kaip skaityti csv failą java








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

rūšiuoti kibirą

>

>

spyruokliniai batai
Išvestis

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

Kai naudokite std::unordered_map

  • Turite nuolat skaičiuoti kai kuriuos duomenis (pavyzdys – eilutes) ir užsakyti nereikia.
  • Jums reikia vieno elemento prieigos, t. y. jokio perėjimo.

CPP




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

eilutę į int java

>

>

Išvestis

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

Pažiūrėkime skirtumus lentelės pavidalu -:

žemėlapis netvarkingas_žemėlapis
1. žemėlapis yra apibrėžtas #include antraštės faile unordered_map yra apibrėžtas #include antraštės faile
2. Jį įgyvendina raudonai juodas medis . Jis įgyvendinamas naudojant maišos lentelę.
3. Tai lėta. Tai greita.
4. Laiko sudėtingumas operacijoms yra O(log N) Operacijų laiko sudėtingumas yra O(1)
5. žemėlapis naudojamas elementams saugoti kaip raktų, reikšmių poras, surūšiuotas pagal raktą. unordered_map naudojamas elementams saugoti kaip raktų, reikšmių poras nerūšiuota tvarka.