Ich versuche eine ungeordnete_map mit einer anderen ungeordneten_map als Schlüssel (benutzerdefinierte Hash-Funktion) zu verwenden. Ich habe auch eine benutzerdefinierte gleich Funktion hinzugefügt, obwohl es wahrscheinlich nicht benötigt wird.C++ unordered_map wo Schlüssel ist auch ungeordnete_map
Der Code tut nicht, was ich erwarte, aber ich kann nicht Kopf oder Zahl davon machen, was vor sich geht. Aus irgendeinem Grund wird die gleiche Funktion nicht aufgerufen, wenn find() ausgeführt wird, was ich erwarte.
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;
}
schauen Sie, was Ihre Hash-Funktion für die beiden Karten zurückgibt – Caleth