何をするものか?
2つの集合の和集合、積集合、差集合を計算し、別のコンテナに格納します。
使い方
演算対象となる2つの集合はソート済みでなければいけません。(ソートされていなければ、まずソートしてください。)それぞれ以下のように使います。まずは、積集合を計算するset_intersectionの使用例。第5引数には結果の出力先となるコンテナのイテレータを指定します。back_inserter(v)とすると、vの最後尾に結果が挿入されます。
// set_intersection
int main() {
int x[] = {2, 4, 6, 8, 10, 12, 14};
int y[] = {3, 6, 9, 12, 15, 18};
vector<int> v;
set_intersection(x, x+7, y, y+6, back_inserter(v));
for (int i = 0; i < (int)v.size(); i++)
cout << v[i] << endl; // 6 12
return 0;
}
次に、和集合を計算するset_unionの使用例。
// set_union
int main() {
int x[] = {2, 4, 6, 8, 10, 12, 14};
int y[] = {3, 6, 9, 12, 15, 18};
vector<int> v;
set_union(x, x+7, y, y+6, back_inserter(v));
for (int i = 0; i < (int)v.size(); i++)
cout << v[i] << endl; // 2 3 4 6 8 9 10 12 14 15 18
return 0;
}
最後に、差集合を計算するset_difference。
// set_difference
int main() {
int x[] = {2, 4, 6, 8, 10, 12, 14};
int y[] = {3, 6, 9, 12, 15, 18};
vector<int> v;
set_difference(x, x+7, y, y+6, back_inserter(v));
for (int i = 0; i < (int)v.size(); i++)
cout << v[i] << endl; // 2 4 8 10 14
return 0;
}
0 件のコメント:
コメントを投稿