2个向量的和值

时间:2015-02-19 13:41:09

标签: c++ vector std

C ++库中是否有任何实现的方法允许您对两个向量(当然大小和类型相同)的值求和?
例如:

std::vector<int> a;//looks like this: 2,0,1,5,0
std::vector<int> b;//looks like this: 0,0,1,3,5

现在将它们的值一起添加应该如下所示:

//2,0,2,8,5

我期待的答案是&#34;不,没有&#39;#34;或&#34;是&#34; +方法。

1 个答案:

答案 0 :(得分:36)

您可以使用std::transformstd::plus<int>()

std::vector<int> a;//looks like this: 2,0,1,5,0
std::vector<int> b;//looks like this: 0,0,1,3,5

// std::plus adds together its two arguments:
std::transform (a.begin(), a.end(), b.begin(), a.begin(), std::plus<int>());
// a = 2,0,2,8,5

这种std::transform形式有5个参数:

  • 首先是两个输入迭代器到第一个序列的初始和最终位置。
  • 第三个是第二个范围初始位置的输入迭代器。
  • 第四个是存储运算结果的范围的初始位置的输出迭代器。
  • 最后一个参数是一个二元函数,它接受两个元素作为参数(两个序列中的每一个),并返回一些可转换为OutputIterator指向的类型的结果值。