我想在哈希集中存储一组(智能)指针<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() );
}
};
我的问题是:这个哈希是个好主意吗?我认为这个哈希将有零或很少的冲突(也许引擎盖下有一些素数模数破坏了我所有的乐趣)。
目的的更多细节:哈希的目的是回收大对象的存储,所以我需要一种快速的方法来检测一个大对象是否已经在垃圾箱中。
如果不是,那么对于智能或哑指针来说,理想的哈希是什么?