map与unordered_map的区别
见http://blog.youkuaiyun.com/orzlzro/article/details/7099231
hash_map与unordered_map的区别
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 written following a standard they all had subtle differences in functionality and performance guarantees.
Starting with C++11 a hash table implementation has been added to the C++ standard library. 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 its elements.