[英]vector element-wise product with C++ and STL
在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中是否有更高效的算法。 謝謝!
std::transform
可用於乘以兩個向量:
#include <algorithm>
#include <functional>
// Precondition: b.size() >= a.size() && r.size() >= a.size()
std::transform(a.begin(), a.end(), b.begin(), r.begin(), std::multiplies<float>());
沒有類似的標准算法具有兩個以上的輸入序列。
編輯我在問題是關於點積時發布了這個答案。 對於元素方面的產品,請參閱std :: transform的第二個版本。
std::vector
類實際上不是數學矢量,而是一個動態大小的數組,一個集合。 你可能因為它的名字而感到困惑。 定義一個實現數學運算的實數vector
類,而不是(錯誤)使用std::vector
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.