Mai*_*ein 2 c++ algorithm lambda c++11
for_each(ivec.begin(),ivec.end(),
[]( int& a)->void{ a = a < 0 ? -a : a;
});
transform(ivec.begin(),ivec.end(),ivec.begin(),
[](int a){return a < 0 ? -a : a;
});
Run Code Online (Sandbox Code Playgroud)
我目前正在学习lambdas,我很好奇我上面发布的两个实现有何不同?
您显示的两个实现在逻辑上没有区别(假设您通过添加返回获得第一个版本).第一个元素修改元素,而最后一个元素用新值覆盖元素.
我看到的最大的区别是,transform你可以通过abs而不是重新实现它的lambda.
| 归档时间: |
|
| 查看次数: |
310 次 |
| 最近记录: |