다른 unordered_map을 키 (사용자 정의 해시 함수)와 함께 사용하려는 unordered_map을 사용하려고합니다. 아마 사용자 정의 동등 함수를 추가했는데 아마도 필요하지는 않습니다.C++ unordered_map 여기서 key는 unordered_map입니다.
코드가 예상 한대로 작동하지 않지만 진행중인 작업의 머리 나 꼬리를 만들 수 없습니다. 어떤 이유로, find()를 수행 할 때 equal 함수가 호출되지 않습니다. 이것은 기대했던 것입니다. ==
하여 두 개체 std::unordered_map
비교
unsigned long hashing_func(const unordered_map<char,int>& m) {
string str;
for (auto& e : m)
str += e.first;
return hash<string>()(str);
}
bool equal_func(const unordered_map<char,int>& m1, const unordered_map<char,int>& m2) {
return m1 == m2;
}
int main() {
unordered_map<
unordered_map<char,int>,
string,
function<unsigned long(const unordered_map<char,int>&)>,
function<bool(const unordered_map<char,int>&, const unordered_map<char,int>&)>
> mapResults(10, hashing_func, equal_func);
unordered_map<char,int> t1 = getMap(str1);
unordered_map<char,int> t2 = getMap(str2);
cout<<(t1 == t2)<<endl; // returns TRUE
mapResults[t1] = "asd";
cout<<(mapResults.find(t2) != mapResults.end()); // returns FALSE
return 0;
}
해시 함수가 두 맵에 대해 반환하는 값을 확인하십시오. – Caleth