2016-11-13 110 views
0

我有一個矢量::c + +創建一個std ::矢量<float>常量&對象

static const std::vector<float> vector1 

是載體的一個基準:

std::vector<float> const& vector2 

我需要與乘以這些矢量的值彼此並將它們存儲在一個新的矢量中。

例如:

result[0]=vector1[0]*vector2[0] 
result[1]=vector1[1]*vector2[1] 

然後,我需要給這個載體,只接受一個方法:

std::vector<float> const& result 

如何在C++中做到這一點?

+0

這不是一個地址,這是一個參考。你在混合C和C++結構。 –

+0

相關:https://stackoverflow.com/questions/8511035/sequence-zip-function-for-c11#8513803,但可能會帶來太多的依賴關係 – WorldSEnder

+0

更改地址爲參考 – Peter111

回答

5
std::vector<float> result; 
std::transform(
    vector1.begin(), vector1.end(), 
    vector2.begin(), 
    std::back_inserter(result), std::multiplies<float>()); 

CallMethodThatTakesReferenceToVector(result); 

Demo

+0

這似乎並不奏效。我得到一個編譯器錯誤,該變換無法找到重載函數。 StoryTellers編輯作品 – Peter111

+1

已更正。現在應該工作。 –