쌍을 키로 사용하여 unordered_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>;
이 사용자 정의 해시 함수를 사용하면 이제 unordered_map
위 내용은 `std::unordered_map`에서 `std::pair`를 키로 사용할 수 없는 이유는 무엇이며 어떻게 해결합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!