views:

395

answers:

1

I recently discovered that the implementation of the hash map in c++ will be called unordered_map. When I looked up why they weren't just using hash_map, I discovered that apparently there are compatiblity issues with the implementation of hash_map that unordered_map resolves(http://en.wikipedia.org/wiki/Unordered_map_%28C%2B%2B%29). The wiki page doesn't give much more information so I wondering if anyone knew some of the issues with hash_map that unordered_map resolves

+10  A: 

Since there was no hash table defined in the C++ standard library, different implementors of the standard libraries would provide a non-standard hash table often named 'hash_map'. Because these implementations were not against a standard they all had subtle differences in functionality and performance guarantees.

Starting with C++0x a hash table implementation has been added to the C++ standard library standard. It was decided to use an alternate name for the class to prevent collisions with these non-standard implementations and to prevent inadvertent use of the new class by developers who had 'hash_table' in their code.

The chosen alternate name is 'unordered_map' which really is more descriptive as it hints at the class's map interface and the unordered nature of it's elements.

Stef
And this is one of the things that show that the `std` namespace didn't quite do what they had hoped. Not that I know what would have reasonably prevented the problem.
Michael Burr
A nested namespace, like tr1...
Matthieu M.