C++中 unordered_map 与 map 的区别
2021-01-22 18:53
1046 查看
由于项目用到了,故抽空先大致记录一下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++中map与unordered_map的区别
- C++中map,hash_map,unordered_map,unordered_set区别与联系
- 【C++】【总结】unordered_map,unordered_set,map和set的用法和区别
- c++中map与unordered_map的区别
- c++中map与unordered_map的区别
- c++中map与unordered_map的区别
- c++中map与unordered_map的区别
- 【C++】unordered_map,unordered_set,map和set的用法和区别
- 【C++】【总结】unordered_map,unordered_set,map和set的用法和区别
- C++中 list, vector, set, map的区别
- c++ list, vector, map, set 区别与用法比较
- c++查找pair,使用map,unordered_map,vector
- map 学习(下)——C++ 中的 hash_map, unordered_map
- C++ list, vector, map, set 区别与用法比较
- map在java和c++中的插入区别
- C++中的hash_map和map的区别
- C++ std::unordered_map使用std::string和char *作key对比
- 20190801-C++中map和set的使用与区别
- LeetCode 1 Two Sum(unordered_map和map的区别)
- unordered_map 与 map 的区别和联系