標準ライブラリに、並べ替えられた 2 つの範囲間の集合の交差と集合の差を同時に計算する機能があるかどうか疑問に思っています。次の行に沿った署名のあるもの:
template <class Input1, class Input2,
class Output1, class Output2, class Output3>
Output3 decompose_sets (Input1 first1, Input1 last1,
Input2 first2, Input2 last2,
Output1 result1, Output2 result2,
Output3 result3 );
の呼び出し後、decompose sets
にないresult1
すべての要素を含み、にないすべての要素を含み、 とで共通のすべての要素を含むようにします。[first1,last1)
[first2,last2)
result2
[first2,last2)
[first1,last1)
result3
[first1,last1)
[first2,last2)
cplusplus.comのサンプル実装はset_difference
、set_intersection
3 回ではなく 1 回だけスキャンを実行する効率的な実装を作成するのに役立つようです。ただし、標準ライブラリに含まれている場合は、車輪の再発明はしたくありません。
リクエストによる例:
2 つのセット a={0, 1, 2, 3, 4} と b={2, 4, 5, 6} が与えられた場合、次の 3 つのセットを作成したいと思います。
- only_a = {0,1,3}
- only_b = {5,6}
- 共通 = {2,4}