64,637
社区成员
发帖
与我相关
我的任务
分享
//实例5-17 set函数使用编程实例
#include <stdio.h>
#include <stdlib.h>
#include <set>
#include <iostream>
#include <functional>
#include <algorithm>
using namespace std;
//这个结构体是什么东西?
struct ltstr{
bool operator()(const char* s1,const char* s2) const
{
return strcmp(s1,s2)<0;
}
};
int main()
{
const int N=6;
const char* a[N]={"isomer","ephemeral","prosaic","nugatory","artichoke","serif"};
const char* b[N]={"flat","this","artichoke","frigate","prosaic","isomer"};
set<const char*, ltstr> A(a,a+N);
set<const char*, ltstr> B(b,b+N);
set<const char*, ltstr> C;
cout<<"Set A :";
copy(A.begin(),A.end(),ostream_iterator<const char*>(cout, " "));
cout<<endl;
cout<<"Set B :";
copy(B.begin(),B.end(),ostream_iterator<const char*>(cout, " "));
cout<<endl;
cout<<"Union : ";//求并集。
set_union(A.begin(),A.end(),B.begin(),B.end(),ostream_iterator<const char*>(cout," "),ltstr());//ltstr()这是什么,构造函数?
cout<<endl;
cout<<"Intersection : ";//求交集
set_intersection(A.begin(),A.end(),B.begin(),B.end(),ostream_iterator<const char*>(cout," "),ltstr());
cout<<endl;
set_difference(A.begin(),A.end(),B.begin(),B.end(),inserter(C,C.begin()),ltstr());
cout<<"Set C(difference of A and B) : ";
copy(C.begin(),C.end(),ostream_iterator<const char*>(cout," "));
cout<<endl;
}
template<class InputIterator1, class InputIterator2, class OutputIterator>
OutputIterator set_union(
InputIterator1 _First1,
InputIterator1 _Last1,
InputIterator2 _First2,
InputIterator2 _Last2,
OutputIterator _Result
);
template<class InputIterator1, class InputIterator2, class OutputIterator, class BinaryPredicate>
OutputIterator set_union(
InputIterator1 _First1,
InputIterator1 _Last1,
InputIterator2 _First2,
InputIterator2 _Last2,
OutputIterator _Result,
BinaryPredicate _Comp
);