C++STL算法篇之集合算法
- 集合算法
- set_union(并集)
- set_difference(差集)
- set_intersection(交集)
- set_symmetric_difference(对称差集)
集合算法
当然最好还是要包含
functional
algorithm
这2个头文件
集合算法有4个函数
1.set_union 交集
2.set_difference 差集
3.set_intersection 交集
4. set_symmetric_difference 对称差集
这4个函数的参数用法都差不多
set_union(并集)
就是求2个容器的并集,有5个参数,前4个参数分别为2个容器的范围,
最后一个参数可以是个输出流,直接打印出来,也可以存在第三个容器的起始位置
#include<iostream>
#include<functional>
#include<algorithm>
#include<string>
#include<vector>
using namespace std;
int main()
{
vector<int> date1{ 1, 2, 3, 4, 7, 8 };
vector<int> date2{ 5, 6, 7, 8 };
//1. set_union 并集算法
//可以放到另一个容器中,也可以直接使用输出流打印出来
set_union(date1.begin(), date1.end(), date2.begin(), date2.end(), ostream_iterator<int>(cout, " "));
return 0;
}
set_difference(差集)
#include<iostream>
#include<functional>
#include<algorithm>
#include<string>
#include<vector>
using namespace std;
int main()
{
vector<int> date1{ 1, 2, 3, 4, 7, 8 };
vector<int> date2{ 5, 6, 7, 8 };
//2.set_difference 差集算法
set_difference(date1.begin(), date1.end(), date2.begin(), date2.end(), ostream_iterator<int>(cout, " "));
return 0;
}
set_intersection(交集)
#include<functional>
#include<algorithm>
#include<string>
#include<vector>
using namespace std;
int main()
{
vector<int> date1{ 1, 2, 3, 4, 7, 8 };
vector<int> date2{ 5, 6, 7, 8 };
//3.交集
set_intersection(date1.begin(), date1.end(), date2.begin(), date2.end(), ostream_iterator<int>(cout, " "));
cout << endl;
return 0;
}
set_symmetric_difference(对称差集)
#include<iostream>
#include<functional>
#include<algorithm>
#include<string>
#include<vector>
using namespace std;
int main()
{
vector<int> date1{ 1, 2, 3, 4, 7, 8 };
vector<int> date2{ 5, 6, 7, 8 };
//4.对称差集算法 set_symetric_difference
set_symmetric_difference(date1.begin(), date1.end(), date2.begin(), date2.end(),ostream_iterator<int>(cout," "));
cout << endl;
return 0;
}
集合算法讲解就到这里