Warum kann ich keine unordered_map mit einem Paar als Schlüssel kompilieren?
Das Problem hier ist das Fehlen einer geeigneten Hash-Funktion für den Schlüsseltyp. Um dieses Problem zu beheben, stellen Sie eine benutzerdefinierte Hash-Funktion für den Paarschlüssel bereit. Hier ist ein Beispiel:
#include <unordered_map> #include <functional> #include <string> #include <utility> struct pair_hash { template <class T1, class T2> std::size_t operator() (const std::pair<T1,T2>& p) const { auto h1 = std::hash<T1>{}(p.first); auto h2 = std::hash<T2>{}(p.second); return h1 ^ h2; // Simple example, for better results use boost.hash_combine } }; using Vote = std::pair<std::string, std::string>; using Unordered_map = std::unordered_map<Vote, int, pair_hash>;
Mit dieser benutzerdefinierten Hash-Funktion können Sie jetzt eine unordered_map
Das obige ist der detaillierte Inhalt vonWarum kann ich „std::pair' nicht als Schlüssel in einer „std::unordered_map' verwenden und wie kann ich das beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!