我想处理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?
答案 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;};