#include <stdio.h>
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
// 初期設定
vector<int> v1 {1, 3, 10, 2, 10, 3, 20};
printf("v1 :");
for (auto x : v1)
printf(" %d", x);
printf("\n");
vector<int> v2 {5, 3, 2, 3, 4, 3, 30};
printf("v2 :");
for (auto x : v2)
printf(" %d", x);
printf("\n");
// sort
sort(v1.begin(), v1.end());
printf(" sort v1 :");
for (auto x : v1)
printf(" %d", x);
printf("\n");
sort(v2.begin(), v2.end());
printf(" sort v2 :");
for (auto x : v2)
printf(" %d", x);
printf("\n");
// v1 に含まれ,v2 に含まれない要素
printf("v1 に含まれ,v2 に含まれない要素\n");
vector<int> v3;
set_difference(v1.begin(), v1.end(), v2.begin(), v2.end(), inserter(v3, v3.begin())); // inserter 参照
printf(" set_difference v3 :");
for (auto x : v3)
printf(" %d", x);
printf("\n");
// v1 及び v2 の片方だけに含まれる要素
printf("v1 及び v2 の片方だけに含まれる要素\n");
vector<int> v4;
set_symmetric_difference(v1.begin(), v1.end(), v2.begin(), v2.end(), inserter(v4, v4.begin()));
printf(" set_symmetric_difference v4 :");
for (auto x : v4)
printf(" %d", x);
printf("\n");
// v1 及び v2 の両方に含まれる要素
printf("v1 及び v2 の両方に含まれる要素\n");
vector<int> v5;
set_intersection(v1.begin(), v1.end(), v2.begin(), v2.end(), inserter(v5, v5.begin()));
printf(" set_intersection v5 :");
for (auto x : v5)
printf(" %d", x);
printf("\n");
// v1 または v2 に含まれる要素
printf("v1 または v2 に含まれる要素\n");
vector<int> v6;
set_union(v1.begin(), v1.end(), v2.begin(), v2.end(), inserter(v6, v6.begin()));
printf(" set_union v6 :");
for (auto x : v6)
printf(" %d", x);
printf("\n");
// v7 または v8 に v5 が含まれるか?
printf("v7 に v5 が含まれるか?\n");
vector<int> v7 {2, 3, 5, 10};
vector<int> v8 {2, 3, 3, 5, 10};
printf(" v7 :");
for (auto x : v7)
printf(" %d", x);
printf("\n");
printf(" v8 :");
for (auto x : v8)
printf(" %d", x);
printf("\n");
printf(" v5 :");
for (auto x : v5)
printf(" %d", x);
printf("\n");
bool b1 = includes(v7.begin(), v7.end(), v5.begin(), v5.end());
bool b2 = includes(v8.begin(), v8.end(), v5.begin(), v5.end());
cout << boolalpha << " v7 に v5 が含まれるか? " << b1 << endl;
cout << " v8 に v5 が含まれるか? " << b2 << endl;
return 0;
}