#include <iostream> using namespace std; #include <algorithm> #include <vector> void myprint5(int val) { cout << val << " "; } //一、set_intersection /* set_intersection(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest); 返回交集的迭代器位置 求两个集合的交集 注意:两个集合必须是有序序列 beg1容器1开始迭代器 end1容器1结束迭代器 beg2容器2开始迭代器 end2容器2结束迭代器 dest目标容器开始迭代器 */ void t000001() { vector<int> v1; vector<int> v2; for (int i = 0; i < 10; i++) { v1.push_back(i); v2.push_back(i + 5); } vector<int> v3; v3.resize(min(v1.size(), v2.size())); //返回交集结束的迭代器位置56789,返回9 vector<int>::iterator itEnd = set_intersection(v1.begin(), v1.end(), v2.begin(), v2.end(), v3.begin()); for_each(v3.begin(), v3.end(), myprint5); cout << endl; for_each(v3.begin(), itEnd, myprint5);//用结束迭代器,不然会打印出10个 } //二、set_union /* set_union(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest); 返回交集的迭代器位置 求两个集合的交集 注意:两个集合必须是有序序列 beg1容器1开始迭代器 end1容器1结束迭代器 beg2容器2开始迭代器 end2容器2结束迭代器 dest目标容器开始迭代器 */ void t000002() { vector<int> v1; vector<int> v2; for (int i = 0; i < 10; i++) { v1.push_back(i); v2.push_back(i + 5); } vector<int> v3; v3.resize((v1.size() + v2.size())); //返回交集结束的迭代器位置56789,返回9 vector<int>::iterator itEnd = set_union(v1.begin(), v1.end(), v2.begin(), v2.end(), v3.begin()); for_each(v3.begin(), v3.end(), myprint5); cout << endl; for_each(v3.begin(), itEnd, myprint5);//用结束迭代器,不然会打印出10个 } //三、set_difference /* set_difference(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest); 返回交集的迭代器位置 求两个集合的交集 注意:两个集合必须是有序序列 beg1容器1开始迭代器 end1容器1结束迭代器 beg2容器2开始迭代器 end2容器2结束迭代器 dest目标容器开始迭代器 */ void t000003() { vector<int> v1; vector<int> v2; for (int i = 0; i < 10; i++) { v1.push_back(i); v2.push_back(i + 5); } vector<int> v3; v3.resize(max(v1.size(), v2.size())); //返回交集结束的迭代器位置56789,返回9 vector<int>::iterator itEnd = set_difference(v1.begin(), v1.end(), v2.begin(), v2.end(), v3.begin()); for_each(v3.begin(), v3.end(), myprint5); cout << endl; for_each(v3.begin(), itEnd, myprint5);//用结束迭代器,不然会打印出10个 } int main_set() { t000003(); return 0; }