Wpis z mikrobloga

Z czego wynika popularność std::map aka drzewo czerwono-czarne? Praktycznie zawsze, gdy robię benchmarki mapa jest wolniejszy od jakiegoś innego kontenera. Często widzę, że polecana jest jako "lookup table", gdzie hashMapa wydaje się być dużo lepsza.
Czy byłby ktoś w stanie wskazać jakiś przypadek, gdzie std::map dobrze się sprawdza?
Pytanie nie dotyczy narzutu pamięci.
#cpp
  • 4
@Malkof: Chyba jedyna zaleta to, że jest posortowana i można szukać zakresu wartości, albo n.p. można wyszukać najdłuższy prefix. Dla wszyskich innych przypadków gdzie kolejność po kluczu nie ma znaczenia, to dobra implementacja unsorted_map będzie znacząco szybsza.

A jeżeli kolejność się liczy, to są przypadki gdzie posortowany std::vertor będzie szybszy, chociaż chyba jest coś, co się nazywa flat_map co działa podobnie (szybkie przeglądanie na przedziale iteratorów; implementacja jest chyba w booście).
@Malkof: Chociaż pytanie było, dlaczego jest popularna? Bo jest przeciętnie dobra dla większości przypadków i nie trzeba się zastanawiać nad implementacją, no i fakt, że kiedyś std::unsorted_map nie istniało, więc każdy używał std::map z braku alternatyw w standardowej bibliotece.