long long
한 쌍을 double
에 매핑해야하지만 사용할 해시 기능을 잘 모르겠습니다. 실제적으로 그들은 보통 0
과 약 100
사이의 숫자가 될 수 있지만 각 쌍은 임의의 두 숫자로 구성 될 수 있습니다 (단, 다시 말해 보장 할 수 없음).해시 함수를 길게 한 쌍의?
Here은 tr1::unordered_map
설명서입니다. 나는 다음과 같이 시작했다 :
typedef long long Int;
typedef std::pair<Int, Int> IntPair;
struct IntPairHash {
size_t operator(const IntPair& p) const {
return ...; // how to hash the pair?
}
};
struct IntPairEqual {
bool operator(const IntPair& a, const IntPair& b) const {
return a.first == b.first
&& a.second == b.second;
}
};
tr1::unordered_map<IntPair, double, IntPairHash, IntPairEqual> myMap;
일반적으로 어떤 해시 함수를 사용할지는 모르겠다. 좋은 범용 해시 함수는 무엇입니까?
다음 일반 용도의 해시 함수 중 하나 이상을 사용하는 것이 좋습니다 : http://www.partow.net/programming/hashfunctions/index.html 매우 빠르고 효율적입니다. . –