1: //remove_if1a.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 remove_if() " 24: "algorithm to\nremove all values that are divisible by 3 from " 25: "a vector of integers."; 26: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n'); 28: int a[] = {1, 2, 2, 3, 4, 5, 2, 3, 6, 7, 2, 8, 3, 9, 10, 2}; 29: vector<int> v(a, a+16); 31: cout << "\nHere are the sixteen values in the vector:\n"; 32: for (vector<int>::size_type i=0; i<v.size(); i++) 33: cout << v.at(i) << " "; 34: cout << "\nSize of vector to start: " << v.size(); 35: cout << "\nCapacity of vector to start: " << v.capacity(); 36: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n'); 38: cout << "\nNow we remove all 5 values that are divisble by 3."; 39: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n'); 40: vector<int>::iterator new_end = remove_if(v.begin(), v.end(), 41: isDivisibleByThree); 42: cout << "\nSize of vector immediately after " 43: "the call to remove_if: " << v.size(); 44: cout << "\nCapacity of vector immediately after " 45: "the call to remove_if: " << v.capacity(); 46: cout << "\nContents of vector immediately after " 47: "the call to remove_if:\n"; 48: for (vector<int>::size_type i=0; i<v.size(); i++) 49: cout << v.at(i) << " "; 50: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n'); 52: cout << "\nNow we erase the last five values of the vector."; 53: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n'); 54: v.erase(new_end, v.end()); 55: cout << "\nSize of vector immediately after the call to erase: " 56: << v.size(); 57: cout << "\nCapacity of vector immediately after the call to erase: " 58: << v.capacity(); 59: cout << "\nContents of vector immediately after the call to erase:\n"; 60: for (vector<int>::size_type i=0; i<v.size(); i++) 61: cout << v.at(i) << " "; 62: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n'); 63: }