問題タブ [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.
c++ - unordered_setの要素を反復処理しながら効率的に置き換えるにはどうすればよいですか?
あなたが持っているとしましょう
そして、それを繰り返しながら、その要素のいくつかを置き換えたいと思います。
これにより、および(再ハッシュが行われる場合)のイテレータが無効になる可能性があるため、このループは未定義の動作を示し、恐ろしくクラッシュする可能性があります。erase
insert
私が考えることができる1つの解決策は、2つの別々のを使用してand操作vector
をバッファリングし、後でイテレータペアを使用して消去と挿入を行うオーバーロードを使用することです(これはおそらく再ハッシュに適しています)。insert
erase
バッファアプローチを使用したとしても、これはまだ肥大化したコードのようであり、2回の再ハッシュが発生する可能性があり、両方とも不要になる可能性があります。
それで、それをするより良い方法はありますか?
c++ - O(1) の unordered_set からのランダム要素
O(1) 時間で unordered_set からランダムな要素を取得できると人々が言及しているのを見てきました。私はこれでそうしようとしました:
ただし、unordered_set イテレーターは + と整数をサポートしていません。 begin
size_t パラメータを指定できますが、これは要素ではなくバケットのインデックスです。バケットをランダムに選択してから、その中の要素をランダムに選択すると、非常に不均衡なランダム分布になります。
適切な O(1) ランダム アクセスの秘訣は何ですか? 問題がある場合、これは VC++ 2010 にあります。
visual-studio-2010 - VC10 unordered_set/map 移動コンストラクターのバグ?
VC10 (Visual Studio 2010) での unordered_set/map の移動コンストラクターは、呼び出された後に右側を未定義の状態にし、他の操作 (「挿入」など) が惨めに失敗するようです。移動代入演算子はうまく機能しているようです。ただし、法線セット/マップはすべての場合で正しく動作するようです。さらに、VC11 (Visual Studio 2012) ではすべて正常に動作しているようです。
これは VC10 での _Hash 実装のバグですか、それとも何か不足していますか? ご意見をお寄せいただきありがとうございます。
c++ - ベクトルの要素を順序なしセットに追加する
vector
a のすべての要素を anに追加する簡単な方法はありunordered_set
ますか? それらは同じタイプです。現在、私は for ループを使用していますが、それを行うためのより良い方法があるかどうか疑問に思っていました
c++ - std::unordered_multisetのバケット
std::unordered_multiset<int>
名前の付いhashTable
たバケットとバケットがあるとしますi
。i
thバケットの要素を反復処理できますか?
c++ - カスタム クラスの unordered_set のデフォルトのハッシュ関数はありますか?
std::unordered_set
初めて使うのですが、ハッシュ関数について質問があります。私の知る限り、ハッシュ関数を指定しないと、デフォルトでstd::hash<Key>
.
私mySet
のクラスの1つにメンバーがいます:
ビルドしようとすると、次のエラーが発生します。
エラー C2440: '型キャスト': 'const MyClass' から 'size_t' に変換できません
カスタムクラスでsize_t
使いたい場合、変換関数(to)を定義する必要はありますか? unordered_set
独自のハッシュ関数を作成せずにデフォルトを使用する方法はありますか?
c++ - unordered_set c++
unordered_set<int> theSet;
順序付けられていないセットを使用して多数の整数を保持すると、clear() または rehash(0) を呼び出してもメモリが解放されないことに気付きました。関数でセットをローカルに定義し、関数が実行を終了した場合でも、セットによって予約されているメモリのほとんどはまだ予約されています。何か案は?
以下はサンプルコードです。テスター関数が返されてメインにいるとき、テスターによって使用されたメモリは解放されません
ありがとう
c++ - std::weak_ptr の c++11 std::unordered_set を作成する方法
私はこのようなセットを持っています:set<weak_ptr<Node>, owner_less<weak_ptr<Node> > > setName;
それは正常に動作します。しかし、それを順不同のセットに変更したいと思います。ただし、これを行うと、約 6 ページのエラーが発生します。それを行う方法はありますか?
エラーメッセージのすべてのページを調べた後、役立つ可能性のある行を見つけました。
c++ - ブーストライブラリ、C++での順序付けされていないセットは私に頭痛の種を与えています
わかりました。これはおそらく非常に簡単なことですが、このコードにBoostライブラリを実装していて(これは初めて使用します)、正しく機能しないようです。これがコードです。hash.h
また、hash.cpp
「hash.cpp:18:7:エラー:予期されたunqualified-idbefore'。'」が表示されます。トークン"。繰り返しになりますが、これはおそらく非常に簡単なことです。Boostライブラリを使用したことはありません。私はインターネットで多くの例を見ましたが、この「単純な」部分をうまく機能させることができないようです。ありがとう。
c++ - std :: unordered_setは連続していますか(std :: vectorのように)?
std::unordered_setにポインタを格納しています。これを行うのは、重複が必要ないためです(コレクション内のポインターを削除するため、重複がある場合は、既に削除されているポインターを削除しようとします)。私はこれらのセットを頻繁にループします。std::vectorがループ(連続メモリ)の最速のコンテナであることを知っているので、std::unordered_setが同じことをするかどうか疑問に思いました。
そうでない場合は、std :: vectorを使用して、ポインターが既に削除されているかどうかを確認する方が速いでしょうか。