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

vla*_*sch 0 c++ foreach lambda c++11

我想处理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];
}
Run Code Online (Sandbox Code Playgroud)

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

Mat*_*asB 6

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

std::transform(begin(s),end(s),begin(m),begin(s),yourfunc);
Run Code Online (Sandbox Code Playgroud)

其中yourfunc需要从S和M元素,并返回所希望的改性为s(或选择的任何其他容器).

auto yourfunc = [](int ms, int mm){return ms-mm;};
Run Code Online (Sandbox Code Playgroud)