用法及各自注意事项:https://www.cnblogs.com/ranjiewen/p/5328137.html
效率及各自优点:https://www.cnblogs.com/wangshaowei/p/9876929.html
还有:https://zhuanlan.zhihu.com/p/48066839
- map内部的key是有序的,遍历一次便可知道,所以,map的key值的<必须有定义。
结构体内需按某一元素重载小于号,所以该元素相同的单元,在加入map后,将归为一类。 - map的内部是红黑树,所以很多操作是logn复杂度。
- 效率上,unordered_map更好,但是占用内存也相对较大。
- 在需要有序性或者对单次查询有时间要求的应用场景下,应使用map,其余情况应使用unordered_map。
unordered_map使用:
//1.头文件
#include<unordered_map>
//2.1
struct pair_hash{
template<class T1, class T2>
std::size_t operator() (const std::pair<T1, T2>& p) const{
auto h1 = std::hash<T1>{}(p.first);
auto h2 = std::hash<T2>{}(p.second);
return h1 ^ h2;
}
};
unordered_map<pair<double,double>,int,pair_hash> mp;
//2.2
unordered_map<int,int> mp;