1: //copy_backward1a.cpp 3: #include <iostream> 4: #include <iomanip> 5: #include <vector> 6: #include <algorithm> 7: using namespace std; 9: int main() 10: { 11: cout << "\nThis program illustrates the use of the STL " 12: "copy_backward() algorithm\nto copy integer values from " 13: "one vector to another."; 14: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n'); 17: int evens[] = {0, 2, 4, 6, 8, 10}; 18: vector<int> v1(evens, evens+6); 19: cout << "\nHere are the contents of v1:\n"; 20: for (vector<int>::size_type i=0; i<v1.size(); i++) 21: cout << v1.at(i) << " "; 22: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n'); 24: int odds[] = {1, 3, 5, 7, 9}; 25: vector<int> v2(odds, odds+5); 26: cout << "\nHere are the contents of v2:\n"; 27: for (vector<int>::size_type i=0; i<v2.size(); i++) 28: cout << v2.at(i) << " "; 29: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n'); 31: cout << "\nNow we use the copy_backward algorithm to copy the " 32: "middle 3 of the 5 values of\nthe second vector to the first " 33: "vector. The 5th element of the first vector is\nthe end of " 34: "the destination range to which we copy."; 35: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n'); 37: vector<int>::iterator p; 38: //We may ignore the (iterator) return value of the algorithm, 39: //but here we save it, to see what it's pointing at: 40: p = copy_backward(v2.begin()+1, v2.begin()+4, v1.begin()+4); 42: cout << "\nHere are the modified contents of the first vector:\n"; 43: for (vector<int>::size_type i=0; i<v1.size(); i++) cout 44: << v1.at(i) << " "; 45: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n'); 47: cout << "\nThe value pointed to by the iterator returned " 48: "by the copy_backward()\nalgorithm is " << *p 49: << " (the last value actually copied)."; 50: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n'); 51: }