STL中的map和unordered_map

STL中的map和unordered_map

map

头文件 #include <map>

原理:std::map的内部实现了一颗红黑树,有对其键值进行排序的功能,所以map是一个有序的容器,map中的每一个元素都是红黑树的一个节点,插入、删除、查找等操作的复杂度都是logn的

//定义
map<int,int> mp
//插入
1.mp.insert(pair<int, int>(x, y));
2.mp[x]+=y;
//删除
mp.erase(x);
mp.erase(mp.begin(),mp.end());//删除区间是一个前闭后开的区间
//迭代
map<int,int>::iterator it;
for(it=mp.begin();it!=mp.end();it++)
//利用迭代器查找键值或者直接得到该节点的值
mp[x];
map<int, int>::iterator it;//得到的迭代器是一个pair对象,键是							  //first,值是second

it = mp.find(x);
cout << it->second << endl;
cout << (*it).second << endl;
//大小
mp.size();

unordered_map

头文件 #include <unordered_map>

原理:std::unordered_map的内部实现了一个哈希表,其中的元素的无序的,unordered_map中每个特定的key都会通过一些特定的哈希运算到一个特定的位置,这个特定的位置可能重复,所以这个位置有多个元素,将这个位置称为哈希桶

用法和map 是差不多的就不详细介绍了

区别

map查找比unordered_map慢一些

unordered_map的建立会比map慢很多

这样,如果我们建树后就不需要多次查询的话就用unordered_map

建树后需要修改的话就用map吧

还是看实际情况选择

posted @ 2019-03-05 16:29  buerdepepeqi  阅读(1104)  评论(0编辑  收藏  举报