1: //adjacent_difference2a.cpp 3: #include <iostream> 4: #include <vector> 5: #include <numeric> 6: using namespace std; 8: /** 9: Evaluates the expression 2a+b. 10: Pre:\n a and b contain integer values. 11: Post:\n Returns the value 2a+b. 12: */ 13: int f 14: ( 15: int a, //in 16: int b //in 17: ) 18: { 19: return 2*a + b; 20: } 22: int main() 23: { 24: cout << "\nThis program illustrates the use of the STL " 25: "adjacent_difference() algorithm\n(extended version) from " 26: "<numeric> to find the value of the programmer-defined" 27: "\nfunction f(a,b)=2*a+b applied to successive pairs of " 28: "integers in one vector,\nand write these values to a second " 29: "vector."; 30: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n'); 32: int a[] = {2, 4, 6, 8, 10}; 33: vector<int> v1(a, a+5); 34: cout << "\nHere are the values in the first vector:\n"; 35: for (vector<int>::size_type i=0; i<v1.size(); i++) 36: cout << v1.at(i) << " "; 37: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n'); 39: int a2[] = {1, 3, 5, 7, 9, 11, 13}; 40: vector<int> v2(a2, a2+7); 41: cout << "\nAnd here are the values in the second vector:\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 << "\nNext a call to ajacent_difference computes the " 47: "function 2a+b for all integer\npairs in the first vector, " 48: "and writes the values to the second vector, starting\n" 49: "at the second position of the second vector."; 50: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n'); 52: vector<int>::iterator p; 53: p = adjacent_difference(v1.begin(), v1.end(), v2.begin()+1, f); 54: cout << "\nHere are the integer values in the second vector " 55: "after this has been done:\n"; 56: for (vector<int>::size_type i=0; i<v2.size(); i++) 57: cout << v2.at(i) << " "; 58: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n'); 59: cout << "\nAnd here is the value pointed to by the iterator " 60: "returned by the algorithm: "; 61: cout << *p; 62: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n'); 63: }