C++11中新特性之:unordered_map
2016-02-23 09:09
435 查看
unordered_map和map类似,都是存储的key-value的值,可以通过key快速索引到value。
不同的是unordered_map不会根据key的大小进行排序,存储时是根据key的hash值判断元素是否相同,即unordered_map内部元素是无序的,而map中的元素是按照二叉搜索树存储,进行中序遍历会得到有序遍历。
所 以使用时map的key需要定义operator<。而unordered_map需要定义hash_value函数并且重载 operator==。但是很多系统内置的数据类型都自带这些,那么如果是自定义类型,那么就需要自己重载operator<或者 hash_value()了。
结论:如果需要内部元素自动排序,使用map,不需要排序使用unordered_map
C++0X为什么不把unordered_map定义为hash_map呢?那是因为在新标准出现之前很多库厂商已经暂用了hash_map这个名词。因此为了向前兼容不得不定义新的unordered_map。
不同的是unordered_map不会根据key的大小进行排序,存储时是根据key的hash值判断元素是否相同,即unordered_map内部元素是无序的,而map中的元素是按照二叉搜索树存储,进行中序遍历会得到有序遍历。
所 以使用时map的key需要定义operator<。而unordered_map需要定义hash_value函数并且重载 operator==。但是很多系统内置的数据类型都自带这些,那么如果是自定义类型,那么就需要自己重载operator<或者 hash_value()了。
结论:如果需要内部元素自动排序,使用map,不需要排序使用unordered_map
C++0X为什么不把unordered_map定义为hash_map呢?那是因为在新标准出现之前很多库厂商已经暂用了hash_map这个名词。因此为了向前兼容不得不定义新的unordered_map。
相关文章推荐
- C++ Template Class List
- C++学习笔记3
- UVALive 5873 - Tree Inspections 【模拟】
- UVALive 5878 - Shortest Leash 【计算几何】
- C语言知识点汇总(未完成)
- UVALive 5876 - Writings on the Wall 【KMP】
- VC++的一个奇怪的C2732错误
- UVALive 5870 - Smooth Visualization
- 2016年2月23号工作日记
- 查找单链表倒数第k个元素
- 【C语言】17-预处理指令3-文件包含
- 【C语言】14-返回指针的函数与指向函数的指针
- 【零基础学习iOS开发】【02-C语言】11-函数的声明和定义
- 【C语言】07-基本语句和运算
- 【C语言】08-数组
- 【零基础学习iOS开发】【02-C语言】02-第一个C语言程序
- C++,栈与队列
- 第三次作业— C++计算器项目的初始部分
- 数组右移(C++)
- Microsoft Visual Studio 2010创建C语言程序的步骤