1: //partition1a.cpp 3: #include <iostream> 4: #include <vector> 5: #include <algorithm> 6: using namespace std; 8: /** 9: Determines if an integer is divisible by 3. 10: Pre:\n n contains an integer. 11: Post:\n Returns true if n is divisible by 3, and otherwise false. 12: */ 13: bool isDivisibleByThree 14: ( 15: int n //in 16: ) 17: { 18: return (n%3 == 0); 19: } 21: int main() 22: { 23: cout << "\nThis program illustrates the use of the STL partition() " 24: "algorithm to\npartition the integer values in a vector of " 25: "integers into two groups:\nthose that are divisible by 3, and " 26: "those that are not."; 27: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n'); 29: int a[] ={11, 7, 9, 4, 8, 12, 2, 5, 3, 10, 1, 6}; 30: vector<int> v(a, a+12); 31: cout << "\nHere are the contents of the vector:\n"; 32: for (vector<int>::size_type i=0; i<v.size(); i++) 33: cout << v.at(i) << " "; 34: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n'); 36: vector<int>::iterator p = partition(v.begin(), v.end(), 37: isDivisibleByThree); 38: cout << "\nAnd here are the contents of the partitioned vector:\n"; 39: for (vector<int>::size_type i=0; i<v.size(); i++) 40: cout << v.at(i) << " "; 41: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n'); 43: cout << "\nThe iterator p returned by the algorithm points to "; 44: if (p == v.end()) 45: cout << "\nthe end of the ouput container."; 46: else 47: cout << "the value " << *p << "."; 48: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n'); 49: }