【发布时间】:2014-05-28 19:18:39
【问题描述】:
我仍在学习如何使用标准库容器std::map 和std::unordered_map。我最近尝试提供一个 hash 函数或 comparison 函数。
有两点我不明白:
std::map<int, int, equal_to<int>> myMap1; // Works
std::map<int, int, hash<int>> myMap2; // Works
std::unordered_map<int, int, equal_to<int>> myMap3; // Doesn't work
std::unordered_map<int, int, hash<int>> myMap4; // Works
为什么我可以为std::map 提供哈希函数,而我却不能为std::unordered_map 提供比较函数?
此外,如果我为比较函数 std::equal_to 使用自定义结构而不重载 == 运算符,则不会出现错误。为什么会这样?
【问题讨论】:
标签: c++ map std unordered-map