问题
I am trying to learn C++ maps. Was just wondering about the implementation of STL map. I read it employs Binary search tree.
Is there a implementation of hash table in STL?
How exactly do STL map stores Key Value pairs?
回答1:
Typical STL implementations are based on Red-Black trees. C++ TR1 provides std::tr1::unordered_map which uses a hash table implementation. Boost also provides an unordered_map hash table implementation.
C++11 now has std::unordered_map
回答2:
Some libraries implement
stdext::hash_mapwhich has almost the same interface asstd::mapbut uses a hash table instead of a binary tree.The binary tree nodes are arranged in the tree according the key, and each key has a value attached, either in whole in the same node, or as a pointer.
回答3:
The key-value pairs are stored in an std::pair. Its a templated struct; an element called first stores the key, and an element called second stores the value. Some info.
来源:https://stackoverflow.com/questions/2460387/hash-table-v-s-stl-map-in-c