2017-11-19 13 views
2

QSetに特定の値が含まれているかどうかを確認する必要がありますが、その値がない場合は挿入して値を挿入するかどうかを示すブール値(true)、または既にそこにいたかどうか(false)。私の質問は、これを効率的に行う方法です。次のコードは実際にハッシュを計算し、そのセットを2回検索します。これは非常に非効率的です。QSetに要素が含まれているかどうかを効率的にテストしてください。

QSet<QString> names; 
bool inserted = false; 
QString name = "Dave"; 
if (!names.contains(name)) 
{ 
    inserted = true; 
    names.insert(name); 
} 
+0

ませんが、 'のstd ::設定:: insert'あなたは、私が理由で' QSet'が必要 – user463035818

+0

たいまさにありません。私は 'std :: unordered_set'でもOKですが、' QString'のカスタムハッシュ関数を気にする必要があります。 –

+0

ええ私はすでにあなたがそれを理由で使用していると想定していました。なぜなら、 'QSet :: insert'も同様の働きをしているのに驚いています。 – user463035818

答えて

1

私が質問を投稿した直後、私はこれがとても簡単だと分かりました。とにかく、私は他人のために質問をしておくと思います。

int size = names.count(); 
names.insert(name); 
bool inserted = names.count() > size; 
あなたが探しているものはおそらく
関連する問題