問題タブ [set-union]
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++ - C++ベクトルの2つのオブジェクトを新しい3番目のオブジェクトにマージ、結合、交差させる方法は?
Vector について学習していて、いくつかの部分を完了できません。私のコードと以下の説明。出力は次のようになります。
スケルトン部分:
これまでのコードは次のとおりです。
ここで立ち往生:演算子+(2つのベクトルをマージする)、演算子-(2番目に存在しない最初のベクトルの数字を表示する)、結合、交差。また、前の b1 と b2 の操作の結果として、新しいベクトルのオブジェクト (3 番目と 4 番目) を作成する方法がわかりません。
c++ - オーバーロードされた operator= が algorithm.cpp に表示されない
set_union (algorithm.cpp に含まれる) と STL ライブラリのセットを使用しています。
私のセットは、operator= をオーバーロードしたカスタム クラス Vertex のオブジェクトを保持します。
頂点クラスは次のとおりです。
問題は、別のクラスのメソッドに含まれる次の行にあります。
そのコードは、algorithm.cpp でコンパイル エラーを生成します。具体的には、set_union のコードで、'InputIterator' 型の 2 つのオブジェクトに対して実行可能なオーバーロードされた operator= がないことを示しています。
コンパイラ エラーの場所は次のとおりです。
ここで何が欠けていますか?
c++ - オブジェクトを持つ segfault set_union: std::set
みなさん、こんにちは:)誰かが解決策を持っているか、最終的に見つけることを願っています^^
環境
私はC++の初心者なので、オブジェクト、テンプレート、イテレータは少し理解して変更を加えるかもしれませんが、難しい場合は操作できません。ポーカー ゲームでハンド レンジを使用して確率を評価するソフトウェアを構築しています。図書館のポーカーストーブを使っています。https://github.com/andrewpock/pokerstove . ポーカーでは、ほとんどの場合、あるハンドと別のハンドが勝つ確率を評価します。しかし、対戦相手のハンドはわかりません。したがって、範囲またはハンドのセットを操作します。ここで、ハンド (2 枚のカード) は、ポーカーストーブの構造である CardSet です。そのため、交差、差、和などの集合操作を行う必要があります。
問題
Union_set には問題がありますが、set_difference には問題がありません。
動作します。pourcent_stove(30.) は、ノー リミット ホールデムのベスト ハンドの上位 30% の 2 枚のカード セットを提供します。
しかし:
動作しません: Segfault があります。
ユニオンは要素の数を増やすことができるため、問題はここにあると思います。追加できる行についてのアイデアはありますか?
トライ
push_back イテレータを実行しようとしました。しかし、成功せずに。このオブジェクトにはメソッドが存在しないと書かれていました。また、ベクトルの構文を使用してセットのサイズを宣言しようとしました: 成功しませんでした
ドキュメント
私が使用したドキュメントへのリンクを貼るのに十分な評判がありません。(最大 2 リンク)
CardSet コード
著者を尊重するために、ライセンスのアドレスを書かなければなりません: https://github.com/andrewpock/pokerstove/blob/master/LICENSE.txt
読んでいただきありがとうございます:)
c++ - Set_Union で実行時エラーが発生する
私は n 個のセットの結合を取り、すべてのセットが互いに素であるかどうかを確認する問題に取り組んできました。私は使用しています
私のコードのドラフトは次のとおりです。
A のどのベクトルにも 0 が含まれないため、I の最後の要素が 0 の場合にループから抜けます。上記のコードは機能しません。不明な実行時エラーが発生します。どこが間違っているのか教えてください。
実際のコード:
algorithm - M 個の並べ替えられたセットの和集合の上位 N 個のアイテムを取得する最も効率的な方法は何ですか?
何千ものキーとスコアを持つ 4 つの並べ替えられたセットがあるとします。それらは並べ替えられたセットであるため、上位のアイテムを取得することは、対数時間の複雑さで行うことができます。
簡単な方法は、セットの結合を取得してから、最上位の項目を取得することです。ただし、そうすることは、少なくともすべてのセットのすべてのアイテムの合計に対して線形です。
私が考えることができる最良の方法はこれです:
- すべてのセットから上位 N 個のアイテムを取得する
- ランクが最も低く、そのランクのスコアが最も高いアイテムを見つけます。
- その点数をセット数で割ります。(これよりスコアが低いキーは上位 N に入ることはありません)
- それらのキーの結合を取ります。(スコアは無視)
- すべてのセットのすべてのキーのスコアを見つけます。(キーは、あるセットではスコア 1 で、別のセットでは 10000 である場合があります)
それは、一番上のリストにある可能性のあるすべてのキーを見つけて、それらのキーで結合を行うようなものです。考慮すべき項目の数を制限するには、おそらくもっと効率的な方法があります。
[編集] キーは 1 つまたは複数のセットで発生し、それらの合計スコアによって最終的なスコアが決まります。したがって、スコアが低いすべてのセットに含まれるキーは、1 つのセットのみに含まれるスコアが高いキーよりもスコアが高くなる可能性があります。
c++ - std::set_union ベクトル>
2 つのベクトル間の結合を計算したい:
std::vector<pair<string,string>> p1;
std::vector<pair<string,string>> p2;
問題は、結合が最初の要素ではなく 2 番目の要素で行われるのはなぜですか? ユニオンのサイズは4に等しくなければなりません。ユニオンが最初の要素で行われるように set_union を変更することは可能ですか?
c++ - set_union と set_intersection の問題 - C++
私は現在、集合計算を含むプロジェクトに取り組んでいます。関数 set_union と set_intersection を使用して、セットの結合と交差を計算しています。私の変数は次のとおりです。
これらは、それぞれ setA、setB、setC、および setD の 4 つの集合の和集合と共通集合です。私の set_union 関数は次のとおりです。
私の set_intersection 関数は次のとおりです。
コンパイルすると、「Required from here」というエラーが表示されますが、その意味はよくわかりません。誰かがこれで私を助けてくれますか? set_union および set_intersection 関数とそのパラメーターに関係があると思いますが、よくわかりません。
java - Java でのセットの結合と交差の計算が正しくない
Java で 2 つのセットの結合と交差を見つける関数を書いてきましたが、アルゴリズムのどこかに問題があるようです。たとえば、次の 2 つの数値ベクトルを入力すると、次のようになります。
私は以下を受け取ります:
これは明らかに間違っています。私は受け取っているはずです:
交差点/ユニオンに関連するメインのコードは次のとおりです。
ここで、Inty は、Integer クラスでは不可能な、ベクトルに格納する必要がある整数の値を変更できるように作成したクラスです。ここに私が書いた関数があります:
なぜこれが機能しないのかについて誰かが洞察を与えることができれば、私はそれを聞きたいです. 前もって感謝します!