这个问题很愚蠢,但我需要以一种非常有效的方式来做——它将在我的代码中一遍又一遍地执行。我有一个返回向量的函数,我必须将返回的值逐个元素添加到另一个向量中。非常简单:
vector<double> result;
vector<double> result_temp
for(int i=0; i< 10; i++) result_temp.push_back(i);
result += result_temp //I would like to do something like that.
for(int i =0; i< result_temp.size();i++)result[i] += result_temp[i]; //this give me segfault
我想做的数学运算是
u[i] = u[i] + v[i] 对于所有 i
可以做什么?
Thanks
编辑:添加了一个简单的初始化,因为这不是重点。 result应该如何初始化?
看起来问题确实出在访问值result
不存在的。 tzaman 展示了如何将结果初始化为 10 个元素,每个元素的值为 0。
现在您需要致电transform
函数(来自 ),应用plus
函数对象(来自):
std::transform(result.begin(), result.end(), result_temp.begin(),
result.begin(), std::plus<double>());
这会迭代result
and result_temp
, 适用plus
添加双精度数,并将总和写回到result
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)