c ++ for_each进程并行处理两个容器

时间:2014-04-08 09:33:09

标签: c++ c++11 foreach lambda

我想处理2个以某种方式相关的容器,我希望彼此元素处理。

简单的例子: 一个容器包含某种总和,另一个长度相等的容器包含必须从该总和中减去的数字。

std::vector<int> s = {20,56,7,34,234,23,54};
std::vector<int> m = {1,3,5,2,3,5,6};

for(int i=0; i<s.size();++i){
  s[i] -= m[i];
}

是否有更优雅的方式来实现这一目标,例如使用for_each?

1 个答案:

答案 0 :(得分:6)

如果你真的想为此使用std算法,你可以使用transform:

std::transform(begin(s),end(s),begin(m),begin(s),yourfunc);

其中yourfunc从s和m获取元素并将所需的修改返回到s(或您选择的任何其他容器)。

auto yourfunc = [](int ms, int mm){return ms-mm;};