Die STL ursprünglich wählte beide. Es hatte eine Hash-Tabelle und die baumbasierte Karte.
Als es jedoch in den Standard aufgenommen wurde, wurden viele Teile entfernt, um die Aufgabe zu vereinfachen (es war einfacher, das Komitee in eine kleinere Bibliothek zu integrieren, und es erforderte weniger Arbeit, ihr Verhalten tatsächlich zu spezifizieren ).
Also wurde die Hash-Tabelle übersprungen.
Beide Datenstrukturen haben jedoch ihre Vorteile. Insbesondere ermöglicht ein Binärbaum, dass der Inhalt der Map geordnet ist (Sie können den Inhalt einer Map in sortierter Reihenfolge durchlaufen, oder Sie können nach allen Elementen fragen, die kleiner als ein bestimmtes Element sind, z Beispiel), und ich kann nur vermuten, dass diese Eigenschaft als wichtiger angesehen wurde als die Leistungsvorteile einer Hash-Karte.
In C ++ 11 wird jedoch std::unordered_map
hinzugefügt, was die lange verloren gegangene Hash-Tabelle ist. Die ursprüngliche Unterlassung war einfach auf Zeitdruck zurückzuführen und möglicherweise auf die Politik des Ausschusses (die Bibliothek klein zu halten, um den Widerstand dagegen zu minimieren).