第3パラメータKeyEqual
の目的はstd::unordered_set
ですか?ハッシュの一意性は十分ではありませんか?std :: unordered_setのKeyEqualとは何ですか?
template<
class Key,
class Hash = std::hash<Key>,
class KeyEqual = std::equal_to<Key>,
class Allocator = std::allocator<Key>
> class unordered_set;
申し訳ありませんが、この質問は素朴に聞こえる。 Python/PHPからC++に移動しています:)
今のところ私の実装はKeyEqual
です。Hash
implとなります。だから私は正しくそれをするのだろうかと思っていた。
ハッシュの衝突を聞いたことがありませんか? 2つのオブジェクトが同じハッシュを生成する場合、その等価述語を使用して、等しいかどうかを比較します。 – Praetorian
ハッシュの一意性は十分ですか?あなたのキーが 'int'で、あなたのハッシュ関数が' [](int i){return i%10; } '? –
['unordered_set'](http://www.cplusplus.com/reference/unordered_set/unordered_set/)のドキュメントで何が問題になっていますか?以前のコメントからのハッシュ衝突は理由N 1ですが、ほぼすべてのstlコンテナで比較操作のカスタマイズが可能です。あなたがキーを比較するためのあなたのやり方が必要な場合や、比較演算子を事前に存在させずにキータイプを使用するとどうなりますか? – mvidelgauz