现在说我已经为 unordered_set 准备好了哈希函数和相等函数
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
构造:
myMap[some_key] = std::unordered_set<std::pair<int,int>, decltype( hashFunc ), decltype( equalFunc )>( 0, hashFunc, equalFunc );
如果您使用类型的别名,当然会更简单:
using mySetType = std::unordered_set<std::pair<int,int>, decltype( hashFunc ), decltype( equalFunc )>;
// ...
myMap[some_key] = mySetType( 0, hashFunc, equalFunc );