1: //transform2a.cpp 3: #include <iostream> 4: #include <vector> 5: #include <deque> 6: #include <list> 7: #include <algorithm> 8: using namespace std; 11: /** 12: Finds the product of two integers. 13: Pre:\n a and b contain integer values. 14: Post:\n The product of a and b has been returned. 15: */ 16: int product 17: ( 18: int a, //in 19: int b //in 20: ) 21: { 22: return a*b; 23: } 26: int main() 27: { 28: cout << "\nThis program illustrates the use of the STL transform " 29: "algorithm (extended\nversion) to multiply the values in a " 30: "range of integers from a vector with\ncorresponding values " 31: "in a range of integers from a deque and write the\nproducts " 32: "to a range within a list of intgers."; 33: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n'); 35: int a1[] = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19}; 36: vector<int> v(a1, a1+10); 37: cout << "\nHere are the values in the vector:\n"; 38: for (vector<int>::size_type i=0; i<v.size(); i++) 39: cout << v.at(i) << " ";; 40: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n'); 42: int a2[] = {2, 4, 6, 8, 10, 12, 14, 16, 18, 20}; 43: deque<int> d(a2, a2+10); 44: cout << "\nHere are the values in the deque:\n"; 45: for (deque<int>::size_type i=0; i<d.size(); i++) 46: cout << d.at(i) << " ";; 47: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n'); 49: int a3[] = {-1, -2 , -3, -4, -5, -6, -7, -8, -9, -10}; 50: list<int> lst(a3, a3+10); 51: cout << "\nHere are the values in the list:\n"; 52: list<int>::iterator p = lst.begin(); 53: while (p != lst.end()) cout << *p++ << " "; 54: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n'); 56: cout << "\nNow we multiply five values from the vector, starting " 57: "with the fourth value,\nwith five values from the deque, " 58: "starting with the second value, and put the\nresults in the " 59: "list, starting at the third position."; 60: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n'); 62: p = lst.begin(); 63: p++; 64: p++; 66: cout << "\nThe iterator returned by the algorithm is pointing " 67: "at the value " 68: << *transform(v.begin()+3, v.begin()+8, d.begin()+1, p, product) 69: << " in the list,\nand here are all of the values in the list " 70: "now:\n"; 71: p = lst.begin(); 72: while (p != lst.end()) cout << *p++ << " "; 73: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n'); 74: }