1  #include <iostream>
  2  #include <algorithm>
  3  #include <vector>
  4  #include <iterator>
  5  using namespace std;
  6  
  7  int main()
  8  {
  9    int array1[] = {1, 2, 3, 4, 5, 6, 7, 8};
 10    int array2[] = {1, 3, 6, 9, 12};
 11    vector<int> intVector(15);
 12  
 13    ostream_iterator<int> output(cout, " ");
 14    cout << "array1: ";
 15    copy(array1, array1 + 8, output);
 16    cout << "\narray2: ";
 17    copy(array2, array2 + 5, output);
 18  
 19    bool isContained =
 20      includes(array1, array1 + 8, array2, array2 + 3);
 21    cout << (isContained ? "\n{1, 3, 6} is a subset of array1" :
 22      "\n{1, 3, 6} is not a subset of array1");
 23  
 24    vector<int>::iterator last = set_union(array1, array1 + 8,
 25      array2, array2 + 5, intVector.begin());
 26    cout << "\nAfter union, intVector: ";
 27    copy(intVector.begin(), last, output);
 28  
 29    last = set_difference(array1, array1 + 8,
 30      array2, array2 + 5, intVector.begin());
 31    cout << "\nAfter difference, intVector: ";
 32    copy(intVector.begin(), last, output);
 33  
 34    last = set_intersection(array1, array1 + 8,
 35      array2, array2 + 5, intVector.begin());
 36    cout << "\nAfter intersection, intVector: ";
 37    copy(intVector.begin(), last, output);
 38  
 39    last = set_symmetric_difference(array1, array1 + 8,
 40      array2, array2 + 5, intVector.begin());
 41    cout << "\nAfter symmetric difference, intVector: ";
 42    copy(intVector.begin(), last, output);
 43  
 44    return 0;
 45  }