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

  1. //: C20:ListSpecialFunctions.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. #include "Noisy.h"
  7. #include <list>
  8. #include <iostream>
  9. #include <algorithm>
  10. using namespace std;
  11. ostream_iterator<Noisy> out(cout, " ");
  12.  
  13. void print(list<Noisy>& ln, char* comment = "") {
  14.   cout << "\n" << comment << ":\n";
  15.   copy(ln.begin(), ln.end(), out);
  16.   cout << endl;
  17. }
  18.  
  19. int main() {
  20.   typedef list<Noisy> LN;
  21.   LN l1, l2, l3, l4;
  22.   generate_n(back_inserter(l1), 6, NoisyGen());
  23.   generate_n(back_inserter(l2), 6, NoisyGen());
  24.   generate_n(back_inserter(l3), 6, NoisyGen());
  25.   generate_n(back_inserter(l4), 6, NoisyGen());
  26.   print(l1, "l1"); print(l2, "l2");
  27.   print(l3, "l3"); print(l4, "l4");
  28.   LN::iterator it1 = l1.begin();
  29.   it1++; it1++; it1++;
  30.   l1.splice(it1, l2);
  31.   print(l1, "l1 after splice(it1, l2)");
  32.   print(l2, "l2 after splice(it1, l2)");
  33.   LN::iterator it2 = l3.begin();
  34.   it2++; it2++; it2++;
  35.   l1.splice(it1, l3, it2);
  36.   print(l1, "l1 after splice(it1, l3, it2)");
  37.   LN::iterator it3 = l4.begin(), it4 = l4.end();
  38.   it3++; it4--;
  39.   l1.splice(it1, l4, it3, it4);
  40.   print(l1, "l1 after splice(it1,l4,it3,it4)");
  41.   Noisy n;
  42.   LN l5(3, n);
  43.   generate_n(back_inserter(l5), 4, NoisyGen());
  44.   l5.push_back(n);
  45.   print(l5, "l5 before remove()");
  46.   l5.remove(l5.front());
  47.   print(l5, "l5 after remove()");
  48.   l1.sort(); l5.sort();
  49.   l5.merge(l1);
  50.   print(l5, "l5 after l5.merge(l1)");
  51.   cout << "\n Cleanup" << endl;
  52. } ///:~
  53.