遇到好几次需要遍历哈希表的情况,还是老忘,贴这记录一下。
传统方法一
#include <iostream>
#include <unordered_map>
using namespace std;
int main()
{
unordered_map<char, int> hash;
for(auto &it : hash) // 引用也可以不加,当需要节省空间时可以加上
{
cout << it.first << ' ' << it.second << endl;
}
return 0;
}
传统方法二
for
循环中的unordered_map<数据类型, 数据类型>::iterator
可以换成auto
for (unordered_map<int, int>::iterator it = hash.begin(); it != hash.end(); it ++ )
{
cout << it->first << ' ' << it->second << endl;
}
C++14以后新方法
在for循环中直接写auto [k, v]: hash
#include <iostream>
#include <unordered_map>
using namespace std;
unordered_map<int, int> table;
int main()
{
// 我在C++11标准下编译了下然后会报错,在C++14标准下可以编译运行
// [k, v]写法需要C++14版本或以上
for (auto [k, v]: table) // k, v分别表示键、值
{
cout << k << ' ' << v << endl;
}
return 0;
}
有道理 first 和second两项(key:value)