1: //rotate_copy1a.cpp 3: #include <iostream> 4: #include <vector> 5: #include <algorithm> 6: using namespace std; 8: int main() 9: { 10: cout << "\nThis program illustrates the use of the STL " 11: "rotate_copy() algorithm to\nrotate the order of all, or " 12: "just some, of the values in a vector of integers\nwhile " 13: "copying the values to an output range in another vector of " 14: "integers."; 15: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n'); 17: int a1[] = {1, 2, 3, 4, 5}; 18: vector<int> v1(a1, a1+5); 20: cout << "\nHere are the values in the vector v1:\n"; 21: for (vector<int>::size_type i=0; i<v1.size(); i++) 22: cout << v1.at(i) << " "; 23: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n'); 25: int a2[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; 26: vector<int> v2(a2, a2+10); 28: cout << "\nHere are the values in the vector v2:\n"; 29: for (vector<int>::size_type i=0; i<v2.size(); i++) 30: cout << v2.at(i) << " "; 31: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n'); 33: cout << "\nNow we copy all values from v1 to v2, starting at the " 34: "beginning of v2,\nand simultaneously rotating the order of the " 35: "copied values so that the\nfourth value bcomes the first value."; 36: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n'); 38: vector<int>::iterator p; 39: p = rotate_copy(v1.begin(), v1.begin()+3, v1.end(), v2.begin()); 41: cout << "\nHere are the revised values in v2:\n"; 42: for (vector<int>::size_type i=0; i<v2.size(); i++) 43: cout << v2.at(i) << " "; 44: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n'); 46: cout << "\nThe iterator returned by the algorithm is pointing at " 47: "the value " << *p << "."; 48: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n'); 50: cout << "\nNow we copy the midddle 3 of the values in v1 from v1 to " 51: "v2, starting at the\n7th value of v2, and simultaneously rotate " 52: "the order of the copied values so\nthat the 3rd of the copied " 53: "values becomes the first of the copied group."; 54: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n'); 56: p = rotate_copy(v1.begin()+1, v1.begin()+3, v1.end()-1, v2.begin()+6); 58: cout << "\nHere are the revised values in v2:\n"; 59: for (vector<int>::size_type i=0; i<v2.size(); i++) 60: cout << v2.at(i) << " "; 61: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n'); 63: cout << "\nThe iterator returned by the algorithm is pointing at " 64: "the value " << *p << "."; 65: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n'); 66: }