簡體   English   中英

使用C ++和STL的向量元素產品

[英]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 :: inner_product

編輯我在問題是關於點積時發布了這個答案。 對於元素方面的產品,請參閱std :: transform的第二個版本。

std::vector類實際上不是數學矢量,而是一個動態大小的數組,一個集合。 你可能因為它的名字而感到困惑。 定義一個實現數學運算的實數vector類,而不是(錯誤)使用std::vector

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM