У меня есть хеш-функция для моего unordered_set, и я хочу использовать функцию поиска набора, но я получаю ошибку. Как я могу использовать функцию поиска набора с помощью пользовательской хеш-функции?
Я хотел сохранить пару в неупорядоченном множестве, и для этого у меня есть простая хеш-функция, и я просто попытался использовать функцию поиска, и это выдает ошибку. Ниже приведена ошибка:
solution.cpp: в функции-члене anagramMappings
Строка 22: символ 33: ошибка: нет соответствующей функции для вызова 'std :: unordered_set, Solution :: SimpleHash> :: find (__ gnu_cxx :: __ alloc_traits, int> :: value_type &)'
it = 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 (ключ), он должен вернуть первый элемент пары