Listing 1

#include <algorithm>
#include <iostream>
#include <iterator>
#include <vector>
using std::copy; using std::fill_n;
using std::ostream_iterator; using std::back_inserter;
using std::vector;
using std::cout;

int main()
  { // show various ways of managing output sequence
  int values[] = { 1, 1, 2, 3, 5, 8, 11, 19 };
  int *first = values;
  int *last = values + (sizeof(values) / sizeof(*values));

  cout << "Writing to unbounded sequence:\n";
  ostream_iterator<int> output_stream(cout, " ");
  copy(first, last, output_stream);
  cout << "\n";

  cout << "Writing to insert iterator:\n";
  vector<int> v;
  copy(first, last, back_inserter(v));
  // show result:
  copy(v.begin(), v.end(), output_stream);
  cout << "\n";

  cout << "Writing to counted sequence:\n";
  int result[3];
  fill_n(result, 3, 4);
  // show result:
  copy(result, result + 3, output_stream);
  cout << "\n";

  cout << "Writing to input-limited sequence:\n";
  copy(values, values + 3, result);
  // show result:
  copy(result, result + 3, output_stream);
  cout << "\n";

  return 0;
  }