問題タブ [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 に挿入する
を作成する次のコードがありますunordered_set<Interval>
。これはうまくコンパイルされます。
ただし、次のコードを使用して挿入しようとするとコンパイルできません。
さらに、次のようなエラー メッセージから問題の原因を特定できません。
私は1つの引数しか提供していないと思っていました...
挿入コードの問題は何ですか?
新しいインスタンス化コードは次のとおりです。unordered_set<Interval, Hash> test;
ただし、まだ大量のエラー メッセージが表示されます。
c++ - unordered_set での == 演算子のオーバーロード
以下に定義されているようにunordered_set
のを作成しようとしています:Intervals
ここでは、ヘッダー ファイルで演算子を宣言し==
、.cpp ファイルで定義しています (他の演算子でうまく行っているように)。上記のコードをコンパイルすると、==
引数が 1 つだけ必要な演算子に関するエラーが発生します。例えば、'bool IntervalEquality::operator==(const Interval&, const Interval&)' must take exactly one argument
別のルートを取り、ヘッダー ファイルで次のように宣言および定義しようとすると、次のようになります。==
複数の定義に関するエラーが表示されます==
これを解決する方法を知っている人はいますか? 大変助かりました!
c++ - ベクトル反復子を含むプログラムのセグメンテーション違反
これがビジュアル スタジオで正常にコンパイルおよび実行されるのに、GNU C++ コンパイラをコンパイルするとセグメンテーション エラーで失敗する理由を教えてください。
私の人生でこれを理解することはできません。前置/後置演算子を調べて確認し、イテレータが条件文に適切に配置されていることを確認しました...何が欠けていますか? 通常、動的配列の割り当て/割り当て解除を行っているときにこの問題が発生しますが、ここでは行っていません。
c++ - ブースト Bimap の unordered_multiset_of に関する質問
を実装してboost::bimap
おり、使用を検討してunordered_multiset_of
いunordered_multiset_of
ますが、ハッシュ関数と等号演算子を渡す必要があります。そして、私はそれを正しく理解できません。
私のハッシュ関数と equal_to 関数はエラーを出すようです。どうすれば修正できますか?でstd::equal_to()
定義された == 演算子が自動的に呼び出されると思いMyClass
ますよね?
c++ - unordered_set の入力が遅すぎる
与えられた 3D メッシュがあり、同一の頂点を削除しようとしています。このために、頂点の座標と対応する法線を含む自己定義の構造体を使用しています。
頂点をデータで満たした後、重複を削除するために unordered_set に追加されます。
3.000.000 頂点のようなデータ量には遅すぎることがわかりました。プログラムを 15 分間実行した後でも、プログラムは終了しませんでした。見えないボトルネックはありますか、それともそのようなタスクに適した別のデータ構造はありますか?
c++ - unordered_set を保持するオブジェクトへのポインターでのセグメンテーション違反
私は何を間違っていますか?
c++ - std::unique_ptr の std::unordered_set の使用
unique_ptr のセットがあるとします。
指定されたポインターがセットに存在するかどうかを確認する安全な方法がわかりません。それを行う通常の方法は を呼び出すことかもしれませんmy_set.find ()
が、パラメーターとして何を渡すのでしょうか?
私が外部から持っているのは生のポインターだけです。したがって、ポインターから別の unique_ptr を作成し、それをそのポインターに渡しfind()
、次にrelease()
そのポインターに渡す必要があります。そうしないと、オブジェクトが (2 回) 破棄されます。もちろん、このプロセスは関数内で実行できるため、呼び出し元は生のポインターを渡すことができ、私が変換を行います。
この方法は安全ですか?unique_ptr のセットを操作するより良い方法はありますか?