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;
}