long long
のペアをdouble
にマッピングする必要がありますが、どのハッシュ関数を使用するかはわかりません。実際には通常0
と約100
の間の数値です(ただし、保証はできません)が、各ペアは任意の2つの数値で構成されます。長いロングハッシュ関数のためのハッシュ関数?
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;
一般に、私はどのハッシュ関数を使うべきか分かりません。良い汎用ハッシュ関数とは何ですか?
次の汎用ハッシュ関数の一つ以上を使用して考えがあります:ブーストは、このような何かを行います。 –