CHAPTER5-17.cpp
上传用户:fjc899
上传日期:2007-07-03
资源大小:187k
文件大小:1k
源码类别:

STL

开发平台:

C/C++

  1. //文件名:CHAPTER5-17.cpp
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <set>
  5. #include <iostream>
  6. #include <functional>
  7. #include <algorithm>
  8. using namespace std;
  9. struct ltstr{  bool operator()(const char* s1, const char* s2) const { return strcmp(s1, s2) < 0;}};
  10. int main()
  11. {
  12.   const int N = 6;
  13.   const char* a[N] = {"isomer", "ephemeral", "prosaic", "nugatory", "artichoke", "serif"};
  14.   const char* b[N] = {"flat", "this", "artichoke","frigate", "prosaic", "isomer"};
  15.   set<const char*, ltstr> A(a, a + N);
  16.   set<const char*, ltstr> B(b, b + N);
  17.   set<const char*, ltstr> C;
  18.   cout << "Set A: ";
  19.   copy(A.begin(), A.end(), ostream_iterator<const char*>(cout, " "));
  20.   cout << endl;
  21.   cout << "Set B: ";
  22.   copy(B.begin(), B.end(), ostream_iterator<const char*>(cout, " "));   
  23.   cout << endl;
  24.   cout << "Union: ";
  25.   set_union(A.begin(), A.end(), B.begin(), B.end(),ostream_iterator<const char*>(cout, " "),ltstr());   
  26.   cout << endl;
  27.   cout << "Intersection: ";
  28.   set_intersection(A.begin(), A.end(), B.begin(), B.end(),ostream_iterator<const char*>(cout, " "),ltstr());    
  29.   cout << endl;
  30.   set_difference(A.begin(), A.end(), B.begin(), B.end(),inserter(C, C.begin()),ltstr());
  31.   cout << "Set C (difference of A and B): ";
  32.   copy(C.begin(), C.end(), ostream_iterator<const char*>(cout, " "));
  33.   cout << endl;
  34. }