我为unordered_set提供了一个哈希函数,我想使用set的查找功能,但出现错误。如何使用自定义哈希函数使用set的查找功能?
我想将一对存储在无序集中,为此,我有一个简单的哈希函数,只是尝试使用查找功能,这会引发错误。错误如下:
solution.cpp:在成员函数anagramMappings中 第22行:字符33:错误:没有匹配函数可调用'std :: unordered_set,解决方案:: SimpleHash> :: find(__ gnu_cxx :: __ alloc_traits,int> :: value_type&) 它= mySet.find(A [i]); ^
struct SimpleHash {
size_t operator()(const std::pair<int, int>& p) const {
return hash<int>()(p.first) ^ hash<int>()(p.second);
}
};
vector<int> anagramMappings(vector<int>& A, vector<int>& B) {
vector<int> res;
unordered_set<pair<int,int>, SimpleHash> mySet;
unordered_set<pair<int,int>, SimpleHash>::iterator it;
for(int i=0; i < B.size(); i++) {
mySet.insert(make_pair(B[i],i));
}
for(int i=0; i<A.size(); i++) {
it = mySet.find(A[i]);
if(it != mySet.end()) {
res.push_back(it->second);
}
}
// for(it = mySet.begin(); it != mySet.end(); it++) {
// cout << it->first << " " << it->second << endl;
// }
return res;
}
使用mySet.find(key)时,它应该返回对的第一个元素
答案 0 :(得分:0)
unordered_set<T>::find()
希望使用T
作为自变量-在这种情况下为pair<int, int>
。您正在传递一个int
。
您可能想考虑使用std::unordered_map
,因为您似乎想将一个int
视为查找关键字,将另一个services.Configure<ForwardedHeadersOptions>(options =>
{
options.KnownProxies.Add(IPAddress.Parse("x.x.x.x"));
options.ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto;
});
app.UseForwardedHeaders(new ForwardedHeadersOptions
{
ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
});
app.UseAuthentication();
视为与该关键字关联的值。