STL изначально выбрал оба.Он имел хеш-таблицу и древовидную карту.
Однако, когда она была принята в стандарт, многие части были удалены, чтобы упростить задачу (было легчеубедить комитет включить меньшую библиотеку, и это потребовало меньше работы в плане фактического определения их поведения).
Таким образом, хеш-таблица была пропущена.
Однако обе структуры данных имеют свои преимущества,В частности, двоичное дерево позволяет упорядочить содержимое карты (вы можете перебирать содержимое карты в отсортированном порядке или запрашивать все элементы, меньшие, чем определенный элемент, например), и я могу только догадываться, что это свойство считалось более важным, чем преимущества производительности хэш-карты.
Однако в C ++ 11 добавлен std::unordered_map
, который представляет собой давно потерянную хеш-таблицу,Его первоначальное упущение было просто из-за нехватки времени и, вполне возможно, политики комитетов (сохранение библиотеки небольшим, чтобы минимизировать сопротивление против нее)