キーとしてペアを使用して unowned_map をコンパイルできないのはなぜですか?
ここで直面している問題は、適切なハッシュ関数がないことですキーの種類については。これを解決するには、ペア キーにカスタム ハッシュ関数を提供します。以下に例を示します。
#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>;
このカスタム ハッシュ関数を使用すると、unowned_map
以上が`std::unowned_map` のキーとして `std::pair` を使用できない理由とその修正方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。