11.10. Computing a Dot Product
Problem
You have two containers of numbers that are the same length and you want to compute their dot product.
Solution
Example 11-19 shows how you can
compute a dot product using the inner_product
function from the <numeric>
header.
Example 11-19. Computing the dot product
#include <numeric>
#include <iostream>
#include <vector>
using namespace std;
int main() {
int v1[] = { 1, 2, 3 };
int v2[] = { 4, 6, 8 };
cout << "the dot product of (1,2,3) and (4,6,8) is ";
cout << inner_product(v1, v1 + 3, v2, 0) << endl;
}The program in Example 11-19 produces the following output:
the dot product of (1,2,3) and (4,6,8) is 40
Discussion
The dot product is a form of inner product known as the Euclidean Inner Product. The inner_product
function is declared as follows:
template<class In, class In2, class T> T inner_product(In first, In last, In2 first2, T init); template<class In, class In2, class T, class BinOp, class BinOp2> T inner_product(In first, In last, In2 first2, T init, BinOp op, Binop2 op2);
The first form of inner_product sums the result of
multiplying corresponding elements from two containers. The second form of the inner_product function allows you to supply your own pairwise
operation and accumulation function. See Example 11-20 to see a sample implementation demonstrating how inner_product works.
Example 11-20. Sample implementation of inner_product()
template<class In, class In2, class T, class BinOp, class BinOp2> T inner_product(In first, In last, In2 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access