unordered_map概述
#include <unordered_map> using namespace std;
unordered_map 容器,直译过来就是”无序 map 容器”的意思。所谓“无序”,unordered_map 容器和 map 容器仅有一点不同,即 map 容器中存储的数据是有序的,而 unordered_map 容器中是无序的。
具体来讲,unordered_map 容器和 map 容器一样,以键值对(pair类型)的形式存储数据,存储的各个键值对的键互不相同且不允许被修改。但由于 unordered_map 容器底层采用的是哈希表存储结构,该结构本身不具有对数据的排序功能,所以此容器内部不会自行对存储的键值对进行排序。
emplace() 向容器中添加新键值对,效率比 insert() 方法高。
#include <iostream>
#include <string>
#include <unordered_map>
using namespace std;
int main()
{
//创建空 umap 容器
unordered_map<string, string> umap;
//向 umap 容器添加新键值对
umap.emplace("c++谁最牛", "yxc");
//输出 umap 存储键值对的数量
cout << umap.size() << endl;
count(key); 在容器中查找以 key 键的键值对的个数。
//使用迭代器输出 umap 容器存储的所有键值对
for (auto it = umap.begin(); it != umap.end(); ++it) {
cout << it->first << " " << it->second << endl;
}
//也可以这样遍历
for(auto& v : umap)
cout << v.first << " " << v.second << endl;
cout<<umap[]//括号内填first,表达式值为second
return 0;
}
//暂时这样,等遇到题目再更新
acwing3302就有以下用法
unordered_map<char, int> pr{{'+', 1}, {'-', 1}, {'*', 2}, {'/', 2}};
while (op.size() && op.top() != '(' && pr[op.top()] >= pr[c]) eval();