C++ – Hvornår skal man bruge unordered map
C++ fik med C++11 versionen en “std::unordered_map” STL container, men hvornår skal man bruge “std::unordered_map” frem for “std::map”.
Jeg har samlet en lille oversigt for hvornår, man skal hvad.
Brug “std::map” når:
- Du ønsker lav memory forbrug
std::unordered_map bruger noget ekstra memory, så hvis der er ønske om at bruge mindst memory skal std:map vælges.
- Hvis key sorteringen også er vigtigt
Modsat std::unordered_map sorter std::map alle elementer baseret på key indexet
- Hvis du ønsker en garanteret lookup tid
std::map giver en mere forudsigelse lookup tid, mens std::unordered_map varierer mere, og for nogle opslag er meget hurtigt, mens andre er langsomere.
Brug “std::unordered_map” når:
Når man har rigtigt mange elementer, og ikke har nogle memory begrænsninger, men gerne vil have hurtige opslag.
/Flemming Jahn