1: //inner_product2a.cpp
3: #include <iostream>
4: #include <vector>
5: #include <numeric>
6: #include <functional>
7: using namespace std;
9: int main()
10: {
11: cout << "\nThis program illustrates the use of the STL "
12: "inner_product() algorithm\n(extended version) to compute the "
13: "inner product of two ranges of integer\nvalues from two "
14: "vectors of integers. This time multiplication is replaced\nby "
15: "addition and addition by multiplication, so that intead of the "
16: "\"usual\"\ninner product, which is the sum of products, we have "
17: "the product of sums.";
18: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n');
20: int a1[] = {2, 1, 4, 3};
21: vector<int> v1(a1, a1+4);
23: cout << "\nHere are the contents of v1:\n";
24: for (vector<int>::size_type i=0; i<v1.size(); i++)
25: cout << v1.at(i) << " ";
26: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n');
28: int a2[] = {1, 2, 3, 4, 5, 6};
29: vector<int> v2(a2, a2+6);
31: cout << "\nHere are the contents of v2:\n";
32: for (vector<int>::size_type i=0; i<v2.size(); i++)
33: cout << v2.at(i) << " ";
34: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n');
36: cout << "\nThe inner product (product of sums, in this case) of "
37: "the values in v1\nwith the values starting at the beginning "
38: "of v2 is "
39: << inner_product(v1.begin(), v1.end(), v2.begin(), 1,
40: multiplies<int>(), plus<int>()) << ".";
41: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n');
43: cout << "\nThe inner product (product of sums, in this case) of "
44: "the last three values\nof each vector is "
45: << inner_product(v1.end()-3, v1.end(), v2.end()-3, 1,
46: multiplies<int>(), plus<int>()) << ".";
47: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n');
48: }