순서가 지정되지 않은 맵의 키로 쌍 이해
쌍을 키로 사용하여 순서가 지정되지 않은 맵을 생성하려고 하면 사용자가 컴파일 오류를 겪을 수 있습니다. 오류. 이 오류는 사용자 정의 키 유형인 pair에 적합한 해시 함수가 없기 때문에 발생합니다.
이 문제를 해결하려면 std::unordered_map에서 사용자가 키 유형에 맞게 특별히 설계된 해시 함수를 제공해야 합니다. 이 함수는 빠르고 효율적인 검색에 중요한 고유 식별자에 키를 매핑하는 역할을 합니다.
사용자 정의 해시 함수 구현
간단하지만 간단하지는 않습니다. std::hash 가능 유형 쌍에 대한 최적의 해시 함수는 다음과 같이 구현될 수 있습니다. 다음은 다음과 같습니다.
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; // Combine the hashes using a simple XOR } };
사용자 정의 해시 함수 사용
해시 함수가 정의되면 std::unordered_map과 함께 사용하여 컴파일 오류를 해결할 수 있습니다.
#include <unordered_map> #include <functional> #include <string> #include <utility> using Vote = std::pair<std::string, std::string>; using Unordered_map = std::unordered_map<Vote, int, pair_hash>; int main() { Unordered_map um; }
대안 솔루션
더 폭넓은 지원과 더 나은 성능을 위해서는 Boost와 같은 라이브러리 활용을 고려해 보세요. Boost는 다음을 제공합니다:
이러한 옵션을 활용하면 사용자는 사용자 정의 키 유형에 대한 안정적인 해싱을 보장할 수 있습니다. std::unordered_map, 효율적이고 최적의 코드 성능을 제공합니다.
위 내용은 순서가 지정되지 않은 맵에서 쌍을 키로 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!