J'ai besoin de mapper une paire de long long
à double
, mais je ne suis pas sûr de la fonction de hachage à utiliser. Chaque paire peut être constituée de deux nombres quelconques, bien qu'en pratique ils seront généralement des nombres entre 0
et environ 100
(mais encore une fois, ce n'est pas garanti).Fonction de hachage pour une paire de long long?
Here est la documentation tr1::unordered_map
. J'ai commencé comme ceci:
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;
En général, je ne suis jamais sûr de la fonction de hachage à utiliser. Qu'est-ce qu'une bonne fonction de hachage à usage général?
Avez-vous envisagé d'utiliser un ou plusieurs des fonctions de hachage à usage général suivants: http://www.partow.net/programming/hashfunctions/index.html ils sont extrêmement rapide et efficace . –