您的位置:首页 > 编程语言 > C语言/C++

unordered_map和map的区别

2016-07-14 11:09 281 查看
boost::unordered_map, 它与 stl::map的区别就是,stl::map是按照operator<比较判断元素是否相同,以及比较元素的大小,然后选择合适的位置插入到树中。所以,如果对map进行遍历(中序遍历)的话,输出的结果是有序的。顺序就是按照operator<
定义的大小排序。而boost::unordered_map是计算元素的Hash值,根据Hash值判断元素是否相同。所以,对unordered_map进行遍历,结果是无序的。

用法的区别就是,stl::map 的key需要定义operator< 。 而boost::unordered_map需要定义hash_value函数并且重载operator==。对于内置类型,如string,这些都不用操心。对于自定义的类型做key,就需要自己重载operator==
或者hash_value()了。 
最后,当不需要结果排好序时,最好用unordered_map。

参考资料:

unordered_map:http://www.cplusplus.com/reference/unordered_map/unordered_map/

map:http://www.cplusplus.com/reference/map/map/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++ boost stl