9. 计算内积函数

Posted hello-nolan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了9. 计算内积函数相关的知识,希望对你有一定的参考价值。

题目:

编写一个模板函数 inner_product,返回值是∑a[i]*b[i] (i 从 0到 n - 1)。测试你的代码。

思路:

由题可知,本函数计算的是两个数组的内积。内积一般是数字,如整数,浮点数。函数返回值应该设置为与数组元素相同类型。

代码:

 1 #include <iostream>
 2 using namespace std;
 3 
 4 template <typename T>
 5 T inner_product(const T* a, const T* b, int array_size) {
 6     T result = 0;
 7     for (int i = 0; i < array_size; ++i) {
 8         result += (a[i] * b[i]);
 9     }
10 
11     return result;
12 }
13 
14 int main() {
15     int a[5] { 0, 1, 2, 3, 4 };
16     int b[5] { 5, 4, 3, 2, 1 };
17     int result = inner_product(a, b, 5);
18     cout << "Inner product : " << result << endl;
19     
20     return 0;
21 }

代码中有几处需要说明:

第一,将形参声明为 const T*,因为函数不应该修改数组元素。

第二,函数内局部变量 result 初始化为 0,因为数组元素为数字,可以这样初始化。

以上是关于9. 计算内积函数的主要内容,如果未能解决你的问题,请参考以下文章

使用从循环内的代码片段中提取的函数避免代码冗余/计算开销

核型SVM

如何在 Fortran 中有效地计算矩阵内积?

量子计算与量子信息之量子力学引论

傅里叶变换本质

理解支持向量机核函数