#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <vector>
#include <set>
#include <list>
#include <algorithm>
#include <functional>
#include <numeric>
#include <string>
#include <iterator> //输出流
using namespace std;
template <typename T>
void printElem(T &t)
{
T::iterator it;
for (it = t.begin(); it != t.end(); it++)
{
cout<<*it<<" ";
}
cout<<endl;
}
void main1101()
{
vector<int> vecIntA;
vecIntA.push_back(1);
vecIntA.push_back(3);
vecIntA.push_back(5);
vecIntA.push_back(7);
vecIntA.push_back(9);
vector<int> vecIntB;
vecIntB.push_back(1);
vecIntB.push_back(3);
vecIntB.push_back(5);
vecIntB.push_back(6);
vecIntB.push_back(8);
vector<int> vecIntC;
vecIntC.resize(vecIntA.size() + vecIntB.size());
//并集
/*
_OutIt set_union(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _OutIt _Dest)
{
// OR sets [_First1, _Last1) and [_First2, _Last2), using operator<
_DEBUG_ORDER(_First1, _Last1);
_DEBUG_ORDER(_First2, _Last2);
_DEBUG_POINTER(_Dest);
return (_Set_union1(_Unchecked(_First1), _Unchecked(_Last1),
_Unchecked(_First2), _Unchecked(_Last2),
_Dest, _Is_checked(_Dest)));
}
*/
set_union(vecIntA.begin(), vecIntA.end(), vecIntB.begin(), vecIntB.end(), vecIntC.begin());
//vecIntC : {1,3,5,6,7,8,9,0,0,0}
cout<<"set_union并集:"<<endl;
printElem(vecIntC);
//交集
/*
_OutIt set_intersection(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _OutIt _Dest)
{
// AND sets [_First1, _Last1) and [_First2, _Last2), using operator<
_DEBUG_ORDER(_First1, _Last1);
_DEBUG_ORDER(_First2, _Last2);
_DEBUG_POINTER(_Dest);
return (_Set_intersection1(_Unchecked(_First1), _Unchecked(_Last1),
_Unchecked(_First2), _Unchecked(_Last2),
_Dest, _Is_checked(_Dest)));
}
*/
fill(vecIntC.begin(),vecIntC.end(),0);
set_intersection(vecIntA.begin(), vecIntA.end(), vecIntB.begin(), vecIntB.end(), vecIntC.begin());
//vecIntC: {1,3,5,0,0,0,0,0,0,0}
cout<<"set_union交集:"<<endl;
printElem(vecIntC);
//差集
/*
_OutIt set_difference(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2, _InIt2 _Last2, _OutIt _Dest)
{
// take set [_First2, _Last2) from [_First1, _Last1), using operator<
_DEBUG_ORDER(_First1, _Last1);
_DEBUG_ORDER(_First2, _Last2);
_DEBUG_POINTER(_Dest);
return (_Set_difference1(_Unchecked(_First1), _Unchecked(_Last1),
_Unchecked(_First2), _Unchecked(_Last2),
_Dest, _Is_checked(_Dest)));
}
*/
fill(vecIntC.begin(),vecIntC.end(),0);
set_difference(vecIntA.begin(), vecIntA.end(), vecIntB.begin(), vecIntB.end(), vecIntC.begin());
//vecIntC: {7,9,0,0,0,0,0,0,0,0}
cout<<"set_union差集:"<<endl;
printElem(vecIntC);
}
/*
1. 并集 set_union: 构造一个有序序列,包含两个有序序列的并集。
2. 交集 set_intersection: 构造一个有序序列,包含两个有序序列的交集。
3. 差集 set_difference: 构造一个有序序列,该序列保留第一个有序序列中存在而第二个有序序列中不存在的元素。
*/
int main()
{
main1101();
cout<<"\nhello"<<endl;
system("pause");
return 0;
}
常用STL算法6_集合
最新推荐文章于 2024-02-17 18:08:08 发布