home *** CD-ROM | disk | FTP | other *** search
/ Reverse Code Engineering RCE CD +sandman 2000 / ReverseCodeEngineeringRceCdsandman2000.iso / RCE / Ebooks / Thinking in C++ V2 / C21 / SetOperations.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  2000-05-25  |  1.2 KB  |  40 lines

  1. //: C21:SetOperations.cpp
  2. // From Thinking in C++, 2nd Edition
  3. // Available at http://www.BruceEckel.com
  4. // (c) Bruce Eckel 1999
  5. // Copyright notice in Copyright.txt
  6. // Set operations on sorted ranges
  7. #include <vector>
  8. #include <algorithm>
  9. #include "PrintSequence.h"
  10. #include "Generators.h"
  11. using namespace std;
  12.  
  13. int main() {
  14.   vector<char> v(50), v2(50);
  15.   CharGen g;
  16.   generate(v.begin(), v.end(), g);
  17.   generate(v2.begin(), v2.end(), g);
  18.   sort(v.begin(), v.end());
  19.   sort(v2.begin(), v2.end());
  20.   print(v, "v", "");
  21.   print(v2, "v2", "");
  22.   bool b = includes(v.begin(), v.end(), 
  23.     v.begin() + v.size()/2, v.end());
  24.   cout << "includes: " <<
  25.     (b ? "true" : "false") << endl;
  26.   vector<char> v3, v4, v5, v6;
  27.   set_union(v.begin(), v.end(), 
  28.     v2.begin(), v2.end(), back_inserter(v3));
  29.   print(v3, "set_union", "");
  30.   set_intersection(v.begin(), v.end(), 
  31.     v2.begin(), v2.end(), back_inserter(v4));
  32.   print(v4, "set_intersection", "");
  33.   set_difference(v.begin(), v.end(), 
  34.     v2.begin(), v2.end(), back_inserter(v5));
  35.   print(v5, "set_difference", "");
  36.   set_symmetric_difference(v.begin(), v.end(), 
  37.     v2.begin(), v2.end(), back_inserter(v6));
  38.   print(v6, "set_symmetric_difference","");
  39. } ///:~
  40.