一連の (スマート) ポインターをハッシュ セットに格納したい<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() );
}
};
私の質問は: このハッシュは良い考えですか? 私は、このハッシュの衝突がゼロまたは非常に少ないという考えを楽しんでいます(おそらく、ボンネットの下にいくつかの素数モジュラスがあり、私の楽しみがすべて台無しになっています)。
意図的な詳細:ハッシュの目的は、大きなオブジェクトのストレージをリサイクルすることです。そのため、大きなオブジェクトが既にビンにあるかどうかをすばやく検出する方法が必要です。
そうでない場合、スマートまたはダムのいずれかのポインターの理想的なハッシュは何でしょうか?