kartta vs unordered_map C++:ssa
Edellytys: std::kartta , std::järjestämätön_kartta
Mitä tulee tehokkuuteen, karttojen ja järjestämättömien karttojen välillä on valtava ero.
Meidän on tunnettava molempien sisäinen toiminta päättääksemme kumpaa käytetään.
Ero:
| 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) ->Keskimääräinen | | O(n) -> Huonoin tapauksen lisäysaika | log(n) + Tasapainottaminen | Sama kuin haussa Poistoaika | log(n) + Tasapainottaminen | Sama kuin haussa
Käytä std::map milloin
- Tarvitset tilattuja tietoja.
- Sinun pitäisi tulostaa / käyttää tietoja (lajiteltuna).
- Tarvitset elementtien edeltäjän/seuraajan.
- Katso lisää tapauksia BST:n eduista Hash Tabl e:hen verrattuna.
CPP
// CPP program to demonstrate use of std::map> #include> int> main()> {> > // Ordered map> > std::map <> int> ,> int> >tilata;> > // 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 < < ' : ' '
'; } }> |
Lähtö
1 : 1 3 : 500 5 : 10 20 : 100
Käytä std::unordered_map when
- Joitakin tietoja on laskettava (esimerkki - merkkijonot), eikä tilausta tarvita.
- Tarvitset yhden elementin pääsyn eli ei läpikulkua.
CPP
// CPP program to demonstrate use of> // std::unordered_map> #include> int> main()> {> > // Unordered map> > std::unordered_map <> int> ,> int> >tilata;> > // 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 < < ' : ' '
'; } }> |
Lähtö
1 : 1 20 : 100 3 : 500 5 : 10
Katsotaanpa erot taulukkomuodossa -:
| kartta | unordered_map | |
| 1. | kartta määritellään #include otsikkotiedostossa | unordered_map on määritetty #include otsikkotiedostossa |
| 2. | Sen toteuttaa puna-musta puu . | Se toteutetaan hash-taulukon avulla. |
| 3. | Se on hidasta. | Se on nopea. |
| 4. | Aika monimutkaisuus operaatioille on O(log N) | Toiminnan aika monimutkaisuus on O(1) |
| 5. | karttaa käytetään elementtien tallentamiseen avain-arvopareina avaimen mukaan lajiteltuina. | unordered_map:a käytetään elementtien tallentamiseen avain-arvopareina lajittelemattomassa järjestyksessä. |