C++ 报错
如果用pair
作为键初始化unordered_map
,例如
unordered_map<pair<int, int>, int> m;
会报下面的错误:
error: call to implicitly-deleted default constructor of ‘unordered_map<pair<int, int>, int>’ m;
分析
unordered_map
中用std::hash
来计算key
,但是C++中没有给pair
做Hash的函数,所以不能用pair
作为unordered_map
的key。
但是!map
可以!
map
里面是通过操作符<
来比较大小,而pair是可以比较大小的。所以,map
用在这里是可以的。
解决
可以将unordered_map
改为map
,例如
map<pair<int, int>, int> m;
编译通过!问题解决!!!