标签:容器 hash map STL 优缺点 无序 C++ unordered
有序容器与无序容器
有序容器 map/multimap 和 set/multiset 内部采用红黑树实现,插入元素时自动排序,可采用中序遍历从小到大遍历元素。
C++11 增加了无序容器 unordered_map/unordered_multimap 和 unordered_set/unordered_multiset。内部采用散列表存储数据,通过Hash函数实现元素的快速操作,同时元素的存储是无序的。
对比map和unordered_map
1 包含的头文件不同
map:
#include < map >
unordered_map:
#include < unordered_map >
2 map的优缺点
优点:
- 有序性,适用于对数据顺序有要求的场合;
- 整体效率很高,红黑树基本可以在O(logn)的时间复杂度完成绝大多数操作;
缺点:
- 红黑树的结构导致其空间占用率必然会高一些;
unordered_map 的优缺点
优点:
- 利用hash表实现O(1)时间复杂度的查询操作,效率非常高;
缺点:
- hash表的建立相对比较耗时(需要解决hash冲突),因此插入的效率稍显逊色;
STL参考
关于STL容器的更多内容可以参考 C++ 参考手册
标签:容器,hash,map,STL,优缺点,无序,C++,unordered 来源: https://blog.csdn.net/jiang_T/article/details/120936088
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。