1: //partial_sort_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: "partial_sort_copy() algorithm\n(default version) to " 12: "sort a range of values from a vector of integers of\nsize 12 " 13: "into ascending order and copy as many of them as will fit " 14: "into a\nrange within a second vector of integers. The contents " 15: "of the initial\nvector are unchanged by this action."; 16: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n'); 18: int a1[] = {10, 2, 6, 11, 9, 3, 4, 12, 8, 7, 1, 5}; 19: vector<int> v1(a1, a1+12); 20: cout << "\nHere are the initial contents of 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[] = {100, 200, 300, 400, 500}; 26: vector<int> v2(a2, a2+5); 27: cout << "\nHere are the initial contents of vector v2:\n"; 28: for (vector<int>::size_type i=0; i<v2.size(); i++) 29: cout << v2.at(i) << " "; 30: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n'); 32: cout << "\nNow we make the following call:"; 33: cout << "\np = partial_sort_copy(v1.begin(), v1.end(), " 34: "v2.begin(), v2.begin()+3);"; 35: vector<int>::iterator p; 36: p = partial_sort_copy(v1.begin(), v1.end(), v2.begin(), v2.begin()+3); 37: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n'); 39: cout << "\nAfter that call, here are the contents of v1:\n"; 40: for (vector<int>::size_type i=0; i<v1.size(); i++) 41: cout << v1.at(i) << " "; 42: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n'); 44: cout << "\nAnd here are the contents of v2:\n"; 45: for (vector<int>::size_type i=0; i<v2.size(); i++) 46: cout << v2.at(i) << " "; 47: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n'); 49: cout << "\nThe iterator p returned by the algorithm points to "; 50: if (p == v2.end()) 51: cout << "\nthe end of the ouput container."; 52: else 53: cout << "the value " << *p << "."; 54: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n'); 56: cout << "\nNext we make the following call:"; 57: cout << "\np = partial_sort_copy(v1.begin()+2, v1.end()-2, " 58: "v2.begin(), v2.end());"; 59: p = partial_sort_copy(v1.begin()+2, v1.end()-2, v2.begin(), v2.end()); 60: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n'); 62: cout << "\nAfter that call, here are the contents of v1:\n"; 63: for (vector<int>::size_type i=0; i<v1.size(); i++) 64: cout << v1.at(i) << " "; 65: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n'); 67: cout << "\nAnd here are the contents of v2:\n"; 68: for (vector<int>::size_type i=0; i<v2.size(); i++) 69: cout << v2.at(i) << " "; 70: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n'); 72: cout << "\nThe iterator p returned by the algorithm points to "; 73: if (p == v2.end()) 74: cout << "\nthe end of the ouput container."; 75: else 76: cout << "the value " << *p << "."; 77: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n'); 78: }