Ho bisogno di mappare una coppia di long long
a double
, ma non sono sicuro di quale funzione hash usare. Ogni coppia può essere composta da due numeri qualsiasi, anche se in pratica saranno numeri compresi tra 0
e circa 100
(ma, di nuovo, non è garantito).Funzione hash per un paio di long long?
Here è la documentazione di tr1::unordered_map
. Ho iniziato così:
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;
In generale, non sono mai sicuro di quale funzione hash utilizzare. Qual è una buona funzione di hash generale?
Hai pensato di usare una o più delle seguenti funzioni hash uso generale: http://www.partow.net/programming/hashfunctions/index.html sono estremamente veloci ed efficienti . –