假设现在我已经为 unordered_set 准备好了 hash 和 equal 函数
auto equalFunc = [](...){...};
auto hashFunc = [](...){...};
如果单独使用 unordered_set,我知道我可以执行以下操作来指定我的 DIY 哈希和相等:
std::unordered_set<std::pair<int,int>, decltype( hashFunc ), decltype( equalFunc )> mySet( 0, hashFunc, equalFunc );
但是,现在假设 unordered_set 要用作 std::unordered_map 的值,我该如何指定哈希和相等?
std::unordered_map<int, std::unordered_set<std::pair<int,int>, decltype( hashFunc ), decltype( equalFunc )>> myMap( ...how? );
std::unordered_set
当将元素插入到地图中时,需要使用函数进行构造:当然,如果使用类型别名的话会更简单:
Lambda 很酷,但不适合这个上下文。我会为 hash 和 equal 函数定义一个类。
使用几个类型别名使得这更加方便。
https://godbolt.org/z/zxqsb3s4b