set_intersection
API
/*
set_intersection 算法 求两个 set 集合的交集
注意:两个集合必须是有序序列
@param beg1 容器 1 开始迭代器
@param end1 容器 1 结束迭代器
@param beg2 容器 2 开始迭代器
@param end2 容器 2 结束迭代器
@param dest 目标容器开始迭代器
@return 目标容器的最后一个元素的迭代器地址
*/
set_intersection(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest)
实例
vector<int> v1;
v1.push_back(1);
v1.push_back(3);
v1.push_back(5);
v1.push_back(7);
v1.push_back(9);
vector<int> v2;
v2.push_back(7);
v2.push_back(9);
v2.push_back(11);
v2.push_back(13);
v2.push_back(17);
vector<int> v3;
v3.resize( min(v1.size(), v2.size()));
//函数的返回值 是v3有效的结束位置
vector<int>::iterator ret;
ret = set_intersection(v1.begin(),v1.end(),v2.begin(),v2.end(), v3.begin());
copy(v3.begin(),ret, ostream_iterator<int>(cout," "));//7 9
cout<<endl;
set_union
API
/*
set_union 算法 求两个 set 集合的并集
注意:两个集合必须是有序序列
@param beg1 容器 1 开始迭代器
@param end1 容器 1 结束迭代器
@param beg2 容器 2 开始迭代器
@param end2 容器 2 结束迭代器
@param dest 目标容器开始迭代器
@return 目标容器的最后一个元素的迭代器地址
*/
set_union(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest)
实例
#include <iostream>
#include <vector>
#include <algorithm>
#include <numeric>
using namespace std;
int main() {
vector<int> v1;
v1.push_back(1);
v1.push_back(3);
v1.push_back(5);
v1.push_back(7);
v1.push_back(9);
vector<int> v2;
v2.push_back(7);
v2.push_back(9);
v2.push_back(11);
v2.push_back(13);
v2.push_back(17);
vector<int> v3;
v3.resize( v1.size()+v2.size());
//函数的返回值 是v3有效的结束位置
vector<int>::iterator ret;
ret = set_union(v1.begin(),v1.end(),v2.begin(),v2.end(), v3.begin());
copy(v3.begin(),ret, ostream_iterator<int>(cout," "));//1 3 5 7 9 11 13 17
cout<<endl;
return 0;
}
set_difference
API
/*
set_difference 算法 求两个 set 集合的差集
注意:两个集合必须是有序序列
@param beg1 容器 1 开始迭代器
@param end1 容器 1 结束迭代器
@param beg2 容器 2 开始迭代器
@param end2 容器 2 结束迭代器
@param dest 目标容器开始迭代器
@return 目标容器的最后一个元素的迭代器地址
*/
set_difference(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest)
实例
#include <iostream>
#include <vector>
#include <algorithm>
#include <numeric>
using namespace std;
int main() {
vector<int> v1;
v1.push_back(1);
v1.push_back(3);
v1.push_back(5);
v1.push_back(7);
v1.push_back(9);
vector<int> v2;
v2.push_back(7);
v2.push_back(9);
v2.push_back(11);
v2.push_back(13);
v2.push_back(17);
vector<int> v3;
v3.resize( v1.size());
//函数的返回值 是v3有效的结束位置
vector<int>::iterator ret;
ret = set_difference(v1.begin(),v1.end(),v2.begin(),v2.end(), v3.begin());
copy(v3.begin(),ret, ostream_iterator<int>(cout," "));//1 3 5
cout<<endl;
return 0;
}
网友评论