我想與另一個unordered_map作爲一個鍵(自定義哈希函數)使用unordered_map。我也添加了一個自定義的平等功能,即使它可能不需要。C++ unordered_map其中鍵也unordered_map
該代碼沒有達到我所期望的,但我無法對正在發生的事情做出正面或反面的反應。出於某種原因,執行find()時不會調用equal函數,這正是我所期望的。
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