2012-03-29 12 views
6
std::unordered_set<my_type> my_set; 

ここで、my_typeはどの要件を満たす必要がありますか? (std :: hashの特殊化の外に)std :: unordered_setの要素の要件

+0

これはn3337 [unord.req] 23.2.5で調べることができます。 [this](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/)ページでn3337を検索してください。 – bames53

答えて

7

std :: hashには特殊化が必要で、ハッシュの衝突を処理するには演算子==を定義する必要があります。

EDIT:STLコンテナには値の意味があるため、型にコピーコンストラクタがあることを確認する必要があります(またはコンパイラで生成するようにしてください)。

EDIT2:これを行う方法の例として、this other SO answerをチェックアウトすることができます。

+0

移動/コピーコンストラクタと代入演算子はどうですか? – cooky451

+0

あなたはおそらくそれらも必要になります。しかし、より直接的には、型はハッシュ可能であり、等価である必要があります。 – bstamour

+0

移動は仕事をしないのですか? (ベクターなどがそれに伴ってうまくいくので、私はそれを望んでいました。) – cooky451

関連する問題