c++ - 如何逐个添加两个 STL vector 的元素?

标签 c++ stl vector

这个问题很愚蠢,但我需要以一种非常有效的方式来做——它将在我的代码中一遍一遍地执行。我有一个返回 vector 的函数,我必须将返回的值逐个元素添加到另一个 vector 中。很简单:

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

可以做什么?

谢谢

编辑:添加了一个简单的初始化,因为这不是重点。结果应该如何初始化?

最佳答案

看起来问题确实是访问不存在的 result 值。 tzaman 展示了如何将结果初始化为 10 个元素,每个元素的值为 0。

现在您需要调用 transform 函数(来自 ),应用 plus 函数对象(来自 ):

std::transform(result.begin(), result.end(), result_temp.begin(),
               result.begin(), std::plus<double>());

这会迭代 resultresult_temp,应用 plus 来添加 double ,并将总和写回 result.

关于c++ - 如何逐个添加两个 STL vector 的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3376124/

相关文章:

c++ - 如何实现一个可以被换行分割的流

c++ - boost序列化多态类

c++ - 如果 vector 有足够的空间(通过保留创建),std::vector::insert() 是否会使迭代器无效?

c++ - 从其他 vector 创建新 vector ,仅使用重复项

c++ - map 给出错误的值

c# - C++/Cx for C# 中的 Directx 包装器

c++ - 当 `std::vector` 调整其内存大小时避免任何自动变量

dictionary - 同时将多个元素Conj成一个向量

c++ - 在清除之前检查一个 vector ?

C++ std::vector<T*> 如果你持有一个指向指针元素的指针,它会在调整大小时变得无效吗?