#include // vector used here but other containers would also have sufficed #include using namespace std; void main() { vector v(10); vector::difference_type v_diff; // use difference_type for storing no of places between iterators vector::iterator v_iter; // use iterator type for declaring iterators into a container // fill v with 10 char values for (v_iter = v.begin(); v_iter != v.end(); v_iter++) { v_diff = v_iter - v.begin(); *v_iter = v_diff + 'a'; } vector::size_type v_size = v_diff; // size_type variable can be assigned non-negative difference_type value vector v2(v_size); vector::const_iterator vc_iter; // use constant iterators to iterate with read-only access vector::reverse_iterator vr_iter; // use reverse_iterator to iterate with reversed increment/decrement semantics // fill v2 with reversed copy of elements in v. Function rbegin and rend return iterators to the beginning // and end, respectively, of the reversed sequence, i.e. the end and beginning of the non-reversed sequence ! for (vr_iter = v2.rbegin(), vc_iter = v.begin(); vr_iter != v2.rend(); vr_iter++, vc_iter++) { *vr_iter = *vc_iter; } for (v_iter = v2.begin(), vr_iter = v.rbegin()+1; v_iter != v2.end(); v_iter++, vr_iter++) { cout << *v_iter << " " << *vr_iter << " "; } // print contents of v and v2 }