unordered_map
是C++
中的哈希表,可以在任意类型与类型之间做映射。
unordered_map
没有设置vector
的排序,map
设置了vector
的自动排序。
基本操作
- 引用头文件(C++11):
#include <unordered_map>
- 定义:
unordered_map<int,int>
、unordered_map<string, double>
… - 插入:例如将(“ABC” -> 5.45) 插入
unordered_map<string, double> hash
中,hash[“ABC”]=5.45 - 查询:
hash["ABC"]
会返回5.45
,即hash["ABC"] = 5.45
(键:”ABC”,值:5.45) - 判断
key
是否存在:hash.count("ABC") != 0
或hash.find("ABC") != hash.end()
- 遍历 (介于y总每次使用的时候都不同,后续遇到在补充。)
遍历
方式一:AcWing 3988. 不同的数
unordered_map<int, int> map;
for (int i = 1; i <= n; i ++){
cin >> x;
map[x] = i;//赋值键值对。
}
//这种方法网上还找不到,记住就行了。
//x为键,v为值
for (auto& [x, v] : map){
if ( ++ cnt > k) break;
cout << v << ' ';
}
方式二:
for (auto& item : hash)
{
cout << item.first << ' ' << item.second << endl;
}
方式三
for (unordered_map<string, double>::iterator it = hash.begin(); it != hash.end(); it ++ )
{
cout << it->first << ' ' << it->second << endl;
}