C++ 标准不提供这种类型的散列
The C++ Standard doesn`t provide a hash for this type
我正在尝试使用一对作为键来创建无序映射。这对我来说是新事物,所以我遵循了一些教程并写下了这个:
struct pair_hash {
template <class T1, class T2>
std::size_t operator () (const std::pair<T1, T2> &p) const {
auto h1 = std::hash<T1>{}(p.first);
auto h2 = std::hash<T2>{}(p.second);
return h1 ^ h2;
}
};
int wmain(int argc, wchar_t * argv[])
{
{...}
using Key = std::pair<DWORD, DWORDLONG>;
std::unordered_map<Key, USN, pair_hash> mymap;
std::pair<DWORD, DWORDLONG> mypair(dwVolSN, fileId);
mymap.insert({ mypair, usn });
std::unordered_map<Key, USN>::const_iterator got;
got = mymap.find(mypair); // HERE I GET THE ERROR
return 0
}
尝试std::unordered_map<Key, USN,
pair_hash
>::const_iterator got;
或auto got = mymap.find(mypair);
我正在尝试使用一对作为键来创建无序映射。这对我来说是新事物,所以我遵循了一些教程并写下了这个:
struct pair_hash {
template <class T1, class T2>
std::size_t operator () (const std::pair<T1, T2> &p) const {
auto h1 = std::hash<T1>{}(p.first);
auto h2 = std::hash<T2>{}(p.second);
return h1 ^ h2;
}
};
int wmain(int argc, wchar_t * argv[])
{
{...}
using Key = std::pair<DWORD, DWORDLONG>;
std::unordered_map<Key, USN, pair_hash> mymap;
std::pair<DWORD, DWORDLONG> mypair(dwVolSN, fileId);
mymap.insert({ mypair, usn });
std::unordered_map<Key, USN>::const_iterator got;
got = mymap.find(mypair); // HERE I GET THE ERROR
return 0
}
尝试std::unordered_map<Key, USN,
pair_hash
>::const_iterator got;
或auto got = mymap.find(mypair);