STL karte, hash_map, unordered_map atšķirība Salīdzinošais
Stl Map Hash_map Unordered_map Distinction Comparative
Pirmkārt:
hash_map
, unordered_map
Salīdzināt
Konkrēts redzams kaudzes pārpilde : Atšķirība starp hash_map un unordered_map?
Tā kā hash tabula nav definēta C ++ standarta bibliotēkā hash_map
, dažādi standarta bibliotēkas ieviesēji nodrošinās hash tabulu, ko parasti sauc par hash_map nestandarta. Tā kā šie ieviešanas veidi neatbilst rakstītajam standartam, tātad tie darbojas un veiktspējas garantijām ir smalkas atšķirības.
Sākot ar C ++ 11, hash tabulas ieviešana ir pievienota C ++ standarta bibliotēkas standartam. Mēs nolēmām izmantot klases alternatīvo nosaukumu, lai novērstu konfliktus ar nestandarta ieviešanu un novērstu nejaušu hash_table izstrādātāju kodā jauno klasi.
Atlasītais alternatīvais nosaukums unordered_map ir aprakstošāks, jo tas norāda uz traucējuma būtību un tā elementu kartēšanas saskarnes klasēm.
redzams hash_map
, unordered_map
Būtībā tas pats, bet unordered_map
Tas tika iekļauts C ++ standarta bibliotēkas standartā.
karte vs nesakārtota karte
Labāks kontrasts, sk .: stackoverflow : Kā izvēlēties starp karti un unordered_map?
Galvenokārt vaicājiet, ievietojiet, izdzēsiet trīs aspektu laika sarežģītību:
unordered_map
(Ekvivalents hash_map
) ar map
Līdzīgi tiek saglabāti key-value
Vērtība, ierakstot key
Ātrā atsauce uz value
. atšķirība ir unordered_map
Nav saskaņā ar key
Šķirošanas lielumu,
map
dati organizācijā, pamatojoties uz sarkanmelna koka ieviešanu, tiek pasūtīts sarkanmelns koks, kuram ir automātiskas šķirošanas funkcija, visu datu iekšējā karte jebkurā laikā.unordered_map
(hash_map
)
pamatojoties uz jaukšanas tabulu, un datu ievietošanas uzmeklēšanas laika sarežģītība ir zema, laiks ir gandrīz nemainīgs, uz vairāk atmiņas patēriņa rēķina. Pamata realizācija, izmantojot relatīvi lielu diapazona indeksu masīvu elementu glabāšanai, daudzu vannu veidošanās, ja taustiņam tiek izmantota hash funkcija, tiek kartēta uz citu uzglabāšanas zonu.
Jūs varat redzēt STL pirmkodu analīzi:
STL pirmkodu analīze -hash_set / hash_multiset
STL pirmkodu analīze -hash_map / hash_multimap
STL pirmkodu analīze - viegli