Staram się wybierać między map
i unordered_map
na następującym przypadku zastosowanie:mapa vs unordered_map dla kilku elementów
Klucz do map
jest wskaźnik. Najczęstszym przypadkiem użycia jest to, że na mapie znajduje się pojedynczy element. Ogólnie, maksymalna liczba elementów na mapie jest mniejsza niż 10. Dostęp do mapy jest bardzo często, a szybkość jest najważniejszym czynnikiem. Zmiany na mapie są rzadkie.
Podczas gdy mierzenie prędkości jest oczywiście właściwym podejściem, ten kod będzie używany na kilku platformach, więc próbuję utworzyć ogólną zasadę wyboru między map
i unordered_map
na podstawie liczby elementów. Widziałem tutaj kilka wpisów wskazujących, że mapa std :: map może być szybsza dla małych elementów liczbowych, ale nie podano definicji "małych".
Czy istnieje pewna reguła dotycząca wyboru między map
a unordered_map
na podstawie liczby elementów? Czy kolejna struktura danych (np. Wyszukiwanie liniowe poprzez vector
) jest jeszcze lepsza?
Czy wydajność tej struktury danych jest tak ważna, że trzeba się nawet zastanowić, której z nich używasz? –
może nie. Może dlatego nie znalazłem odpowiedzi poprzez wyszukiwanie, ponieważ jest to pomijalna różnica. – pauld
Może to zależeć od wydajności funkcji mieszania w porównaniu z funkcją porównywania. – Philipp