#include // provides istream_iterator and inserter #include #include #include #include // provides copy, copy_backward #include // provides accumulate #include #include // provides toupper using namespace std; void main() { vector v; // read a stream of integers from cin into v. The inserter function is described elsewhere in this chapter. copy(istream_iterator(cin), istream_iterator(), inserter(v, v.begin())); list l(v.size()); // copy_backward expects input iterators as its first two arguments and v both meets and exceeds that by // providing random access iterators. The third argument must be at least an output iterator and l does // better by providing bidirectional iterators. copy_backward(v.begin(), v.end(), l.begin()); set s; // copy requires at least input iterators as its first arguments and an output iterator as its third copy(l.begin(), l.end(), inserter(s, s.begin())); // make list of unique integers copy(s.begin(), s.end(), ostream_iterator(cout," ")); // accumulate requires at least input iterators as its two first arguments and s exceeds that by // providing bidirectional iterators. cout << endl << "Accumulated sum: " << accumulate(s.begin(), s.end(), 0) << endl; }