Niedawna rozmowa unordered_mapw C ++ uświadomiła mi, że powinienem używać tego unordered_mapw większości przypadków, w których mapwcześniej go użyłem , ze względu na efektywność wyszukiwania ( zamortyzowane O (1) vs. O (log n) ). Najwięcej razy używam mapę, używam albo intczy std::stringjako kluczowy typu; stąd nie mam problemów z definicją funkcji skrótu. Im dłużej o tym myślałem, tym bardziej zdawałem sobie sprawę, że nie mogę znaleźć żadnego powodu, aby użyć std::mapover a std::unordered_mapw przypadku kluczy o prostych typach - spojrzałem na interfejsy i nie znalazłem żadnego znaczące różnice, które wpłynęłyby na mój kod.
Stąd pytanie: czy jest jakiś prawdziwy powód do korzystania std::mapw ciągu std::unordered_mapw przypadku typów prostych, jak inti std::string?
Pytam z ściśle programistycznego punktu widzenia - wiem, że nie jest to w pełni uważane za standardowe i może powodować problemy z portowaniem.
Spodziewam się również, że jedna z poprawnych odpowiedzi może brzmieć „jest bardziej wydajna dla mniejszych zestawów danych” z powodu mniejszego obciążenia (czy to prawda?) - dlatego chciałbym ograniczyć pytanie do przypadków, w których ilość klucze są nietrywialne (> 1 024).
Edycja: duh, zapomniałem oczywistości (dzięki GMan!) - tak, mapy są oczywiście uporządkowane - wiem o tym i szukam innych powodów.

