私はstd::set<int>
と複数セットのクラスstd::multiset<int>
を使用して、組合、交差などの設定操作を実行しています。問題は2つのマルチセット間の交差を実行する必要があることです。私は重複した値も得ています。交差点は、単純なセット(マルチセットではない)で使用するとうまく動作します。C++を使用して複数セットの交差を実行したい
セット1 = {1,2,3,4,5,6}
SET2 = {} -4,5,6,7,8,9-
次いで
のstd :: set_intersectionは私に正しいを与えます私はマルチセット
マルチSET1を持っている場合、しかし、{4,5,6}
ある結果{1,1,2,2,3,3,4,4,5,5,6 、6}
マルチセット2 {4,4,5,5,6,6,7,7,8,9,9}
と私は再びstd :: set_intersectionを使用しますIマルチセットを使用していたが、実際の交差点は{4,4,5,5,6,6}
あるため、正しくない結果、{4,5,6}
は私よ交差点の結果を保持するには、私は間違った答えを得る。
誰も私にこの問題を解決する方法を教えてもらえますか?
回避策として、実装でベクトルのstd :: setを使用できるようにしてから、必要なすべての要素を含むベクトルをset_intersectionが返しますか? – 16tons
それぞれの '{elememt、count}'に対して、出力の2つのマルチセット間のカウントを最小にしたいですか? – Yakk
ありがとう、誰も私はベクトルでそれを行うことができるかもしれませんが、彼らは私のコードのいたるところにあるので、私はセットでソリューションを持っている場合、私は好む。私は私の例で示した結果にしたいだけです。私は、重複した要素を重複としてとらえたくないが、個々の番号を持つことを望んでいない。あなたがちょうど言ったような@ Yakkはい何か –