gpt4 book ai didi

c++ - C++中两个 vector 的逐元素乘法

转载 作者:可可西里 更新时间:2023-11-01 15:37:58 28 4
gpt4 key购买 nike

我正在尝试对两个 vector 进行以下数学运算:

v1 = [a1][a2][a3][a4][a5]
v2 = [b1][b2][b3][b4]b5]

想要计算:

v = [a2*b2][a3*b3][a4*b4][a5*b5]

请注意,我不想要新 vector 中的第一个元素。

我想知道是否有一种比 for 循环(使用推回)更有效(单行)的方式来乘以(按元素)在 C++ 中的两个 vector 。我目前的做法如下,

for(long i=1;i < v1.size();++i){
v.push_back(v1[i]*v2[i]);
}

我也尝试了以下,

 for (long i = 1; i < v1.size(); ++i){
v[i-1] = v1[i]*v2[i];
}

有什么建议吗?

最佳答案

std::transform( v1.begin()+1, v1.end(),
v2.begin()+1, v.begin(), // assumes v1,v2 of same size > 1,
// v one element smaller
std::multiplies<int>() ); // assumes values are 'int'

您可以将 v.begin() 替换为 std::back_inserter(v)如果 v 为空,您应该预先 reserve() 内存以避免多次分配。

关于c++ - C++中两个 vector 的逐元素乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13728430/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com