Нещодавно розмова про unordered_mapC ++ дала мені зрозуміти, що я повинен використовуватись unordered_mapу більшості випадків, коли я використовував mapраніше, через ефективність пошуку ( амортизований O (1) проти O (log n) ). У більшості випадків я використовую карту, я використовую intабо std::stringключовий тип; отже, у мене немає проблем із визначенням хеш-функції. Чим більше я думав про це, тим більше я зрозумів, що я не можу знайти жодної причини використання std::mapнадмірника std::unordered_mapу випадку клавіш з простими типами - я переглянув інтерфейси і не знайшов жодного суттєві відмінності, які вплинули б на мій код.
Звідси питання: чи є реальна причина для використання std::mapбільш ніж std::unordered_mapв разі простих типів , як intі std::string?
Я прошу з точки зору суто програмування - я знаю, що це не повністю вважається стандартним і що це може створити проблеми з переносом.
Крім того, я очікую, що одна з правильних відповідей може бути "ефективніше для менших наборів даних" через менші накладні витрати (це правда?) - отже, я хотів би обмежити питання випадками, коли кількість клавіші нетривіальні (> 1 024).
Редагувати: так , я забув очевидне (спасибі GMan!) - так, карти замовлені звичайно - я це знаю, і шукаю інші причини.

