【发布时间】:2012-07-31 10:21:52
【问题描述】:
在 C++ 中实现元素乘积并不难:
vector<float> a_array;
vector<float> b_array;
vector<float> c_array;
vector<float> dot_array;
....
for(int i=0; i<a_array.size(); i++)
{
float temp;
temp = a_array[i]*b_array[i]*c_array[i];
dot_array[i] = temp;
}
这是一个非常简单的实现,我想知道 STL 中是否已经有更高效的算法可用。谢谢!
【问题讨论】:
-
这不是点积。
-
您的意思是两个或多个向量的元素乘积。点积(又名标量或内积)是
sum(a[i]*b[i]),这不是您的代码所做的。 -
谢谢,我把问题的内容改了
-
这种概括真的很难写。
inner_product适用于 2 个向量,但不适用于n甚至>2。在C++11中可以定义n-ary算法来做你想做的事情。 -
看过人们的答案后,我不会说 STL 算法更有效。它们的作用与您几乎相同,但也包括会影响效率的开销。