Я хочу сохранить набор (умных) указателей в хэш-наборе, либо <boost/unordered_set>
. После 10 секунд размышлений я придумал эту хэш-функцию:
typedef boost::shared_ptr<myType> ref_t;
struct SharedPtrHash : public std::unary_function<ref_t, std::size_t> {
std::size_t operator()(ref_t const& obj) const {
return reinterpret_cast<std::size_t>( obj.get() );
}
};
Мой вопрос: хорошая ли эта хеш-идея? меня развлекает мысль, что этот хеш будет иметь нулевое или очень малое количество столкновений (возможно, под капотом есть какой-то модуль простых чисел, портящий все мое веселье).
Дополнительная информация о цели: Цель хэша - переработка хранилища больших объектов, поэтому мне нужен быстрый способ определить, есть ли большой объект в корзине.
в противном случае, какой будет идеальный хеш для указателей, умных или тупых?