自定义unordered_map的键值写法
2001. 可互换矩形的组数
这题常规做法是用unordered_map<double,int> 去存长宽比值,但是double的比较可能会有数据损耗的,当一些数字精度过高时
比如15.0/9 和5.0/3,可能存储的值是不一样的,
所以用pair去当做键值,
当键值为pair时,unordered_map不支持这种构造,需要自定义pair的哈希值计算函数,
lumda是匿名函数, 作为参数传递必须加decltype,但具体为啥我也还不清楚,回头有空再写
auto hash_fn = [](const pair<int, int>& p) {
return hash<int>{}(p.first) ^ (hash<int>{}(p.second) << 1);
};
unordered_map<pair<int, int>, int, decltype(hash_fn)> t_map;
posted on 2025-06-15 15:47 sleepy2con 阅读(3) 评论(0) 收藏 举报