C++中 unordered_map 与 map 的区别
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C++中 unordered_map 与 map 的区别,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1691字,纯文字阅读大概需要3分钟。
内容图文
![C++中 unordered_map 与 map 的区别](/upload/InfoBanner/zyjiaocheng/610/055427d52d49499ca22c195606650bf5.jpg)
由于项目用到了,故抽空先大致记录一下unordered_map与map二者的区别
下面 以 unordered_map ( 无序map ) 为主进行比较。
1、头文件
#include <unordered_map>
#include <map>
2、unordered_map 内部实现:哈希表
【而 map 内部实现了红黑树】
3、unordered_map 查找效率:非常高
unordered_map 内部的Hash表通过把关键码值映射到Hash表中一个位置来访问记录,查找的时间复杂度可达到O(1),其在海量数据处理中有着广泛应用。
【而 map 则需要挨个遍历查找,效率低下】
4、unordered_map 是否有序:无序
unordered_map 内部时哈希表,故当加入元素后,不会排序。
【而 map 内部实现了红黑树,故map存入元素时会自动排序,且默认升序】
分别举例子
举个 unordered_map 栗子:
unordered_map<int, string> m_map;
m_map.insert(pair<int, string>(3, "333"));
m_map.insert(pair<int, string>(1, "111"));
m_map.insert(pair<int, string>(4, "444"));
m_map.insert(pair<int, string>(2, "222"));
m_map.insert(pair<int, string>(5, "555"));
unordered_map<int, string>::iterator iter = m_map.begin();
for (iter; iter != m_map.end(); iter++)
{
cout << iter->first << "," << iter->second.c_str() << endl;
}
输出:
3,333
1,111
4,444
2,222
5,555
unordered_map 输出结论:可看出为无序。
举个 map 栗子:代码里只是把 unordered_map 换成了 map 而已。
map<int, string> m_map;
m_map.insert(pair<int, string>(3, "333"));
m_map.insert(pair<int, string>(1, "111"));
m_map.insert(pair<int, string>(4, "444"));
m_map.insert(pair<int, string>(2, "222"));
m_map.insert(pair<int, string>(5, "555"));
map<int, string>::iterator iter = m_map.begin();
for (iter; iter != m_map.end(); iter++)
{
cout << iter->first << "," << iter->second.c_str() << endl;
}
输出:
1,111
2,222
3,333
4,444
5,555
map 输出结论:可看出为有序。
结束:
分享也是自己对问题再次加深理解的方式,可能不全面,但绝对有用,后面将不断完善~
内容总结
以上是互联网集市为您收集整理的C++中 unordered_map 与 map 的区别全部内容,希望文章能够帮你解决C++中 unordered_map 与 map 的区别所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。