由于项目用到了,故抽空先大致记录一下unordered_map与map二者的区别

下面 以 unordered_map ( 无序map ) 为主进行比较。

1、头文件

#include

#include

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 m_map;

m_map.insert(pair(3, "333"));

m_map.insert(pair(1, "111"));

m_map.insert(pair(4, "444"));

m_map.insert(pair(2, "222"));

m_map.insert(pair(5, "555"));

unordered_map::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 m_map;

m_map.insert(pair(3, "333"));

m_map.insert(pair(1, "111"));

m_map.insert(pair(4, "444"));

m_map.insert(pair(2, "222"));

m_map.insert(pair(5, "555"));

map::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 输出结论:可看出为有序。

结束:

分享也是自己对问题再次加深理解的方式,可能不全面,但绝对有用,后面将不断完善~

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐