問題タブ [unordered-set]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
1952 参照

c++ - unordered_setの要素を反復処理しながら効率的に置き換えるにはどうすればよいですか?

あなたが持っているとしましょう

そして、それを繰り返しながら、その要素のいくつかを置き換えたいと思います。

これにより、および(再ハッシュが行われる場合)のイテレータが無効になる可能性があるため、このループは未定義の動作を示し、恐ろしくクラッシュする可能性があります。eraseinsert

私が考えることができる1つの解決策は、2つの別々のを使用してand操作vectorをバッファリングし、後でイテレータペアを使用して消去と挿入を行うオーバーロードを使用することです(これはおそらく再ハッシュに適しています)。inserterase

バッファアプローチを使用したとしても、これはまだ肥大化したコードのようであり、2回の再ハッシュが発生する可能性があり、両方とも不要になる可能性があります。

それで、それをするより良い方法はありますか?

0 投票する
4 に答える
10084 参照

c++ - O(1) の unordered_set からのランダム要素

O(1) 時間で unordered_set からランダムな要素を取得できると人々が言及しているのを見てきました。私はこれでそうしようとしました:

ただし、unordered_set イテレーターは + と整数をサポートしていません。 beginsize_t パラメータを指定できますが、これは要素ではなくバケットのインデックスです。バケットをランダムに選択してから、その中の要素をランダムに選択すると、非常に不均衡なランダム分布になります。

適切な O(1) ランダム アクセスの秘訣は何ですか? 問題がある場合、これは VC++ 2010 にあります。

0 投票する
1 に答える
645 参照

visual-studio-2010 - VC10 unordered_set/map 移動コンストラクターのバグ?

VC10 (Visual Studio 2010) での unordered_set/map の移動コンストラクターは、呼び出された後に右側を未定義の状態にし、他の操作 (「挿入」など) が惨めに失敗するようです。移動代入演算子はうまく機能しているようです。ただし、法線セット/マップはすべての場合で正しく動作するようです。さらに、VC11 (Visual Studio 2012) ではすべて正常に動作しているようです。

これは VC10 での _Hash 実装のバグですか、それとも何か不足していますか? ご意見をお寄せいただきありがとうございます。

0 投票する
2 に答える
32800 参照

c++ - ベクトルの要素を順序なしセットに追加する

vectora のすべての要素を anに追加する簡単な方法はありunordered_setますか? それらは同じタイプです。現在、私は for ループを使用していますが、それを行うためのより良い方法があるかどうか疑問に思っていました

0 投票する
1 に答える
184 参照

c++ - std::unordered_multisetのバケット

std::unordered_multiset<int>名前の付いhashTableたバケットとバケットがあるとしますiithバケットの要素を反復処理できますか?

0 投票する
2 に答える
10644 参照

c++ - カスタム クラスの unordered_set のデフォルトのハッシュ関数はありますか?

std::unordered_set初めて使うのですが、ハッシュ関数について質問があります。私の知る限り、ハッシュ関数を指定しないと、デフォルトでstd::hash<Key>.

mySetのクラスの1つにメンバーがいます:

ビルドしようとすると、次のエラーが発生します。

エラー C2440: '型キャスト': 'const MyClass' から 'size_t' に変換できません

カスタムクラスでsize_t使いたい場合、変換関数(to)を定義する必要はありますか? unordered_set独自のハッシュ関数を作成せずにデフォルトを使用する方法はありますか?

0 投票する
2 に答える
694 参照

c++ - unordered_set c++

unordered_set<int> theSet;順序付けられていないセットを使用して多数の整数を保持すると、clear() または rehash(0) を呼び出してもメモリが解放されないことに気付きました。関数でセットをローカルに定義し、関数が実行を終了した場合でも、セットによって予約されているメモリのほとんどはまだ予約されています。何か案は?

以下はサンプルコードです。テスター関数が返されてメインにいるとき、テスターに​​よって使用されたメモリは解放されません

ありがとう

0 投票する
4 に答える
8722 参照

c++ - std::weak_ptr の c++11 std::unordered_set を作成する方法

私はこのようなセットを持っています:set<weak_ptr<Node>, owner_less<weak_ptr<Node> > > setName;

それは正常に動作します。しかし、それを順不同のセットに変更したいと思います。ただし、これを行うと、約 6 ページのエラーが発生します。それを行う方法はありますか?

エラーメッセージのすべてのページを調べた後、役立つ可能性のある行を見つけました。

0 投票する
2 に答える
250 参照

c++ - ブーストライブラリ、C++での順序付けされていないセットは私に頭痛の種を与えています

わかりました。これはおそらく非常に簡単なことですが、このコードにBoostライブラリを実装していて(これは初めて使用します)、正しく機能しないようです。これがコードです。hash.h

また、hash.cpp

「hash.cpp:18:7:エラー:予期されたunqualified-idbefore'。'」が表示されます。トークン"。繰り返しになりますが、これはおそらく非常に簡単なことです。Boostライブラリを使用したことはありません。私はインターネットで多くの例を見ましたが、この「単純な」部分をうまく機能させることができないようです。ありがとう。

0 投票する
4 に答える
4712 参照

c++ - std :: unordered_setは連続していますか(std :: vectorのように)?

std::unordered_setにポインタを格納しています。これを行うのは、重複が必要ないためです(コレクション内のポインターを削除するため、重複がある場合は、既に削除されているポインターを削除しようとします)。私はこれらのセットを頻繁にループします。std::vectorがループ(連続メモリ)の最速のコンテナであることを知っているので、std::unordered_setが同じことをするかどうか疑問に思いました。

そうでない場合は、std :: vectorを使用して、ポインターが既に削除されているかどうかを確認する方が速いでしょうか。