Мне нужно сопоставить пару 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 они очень быстро и эффективно , – 2011-01-23 10:11:34