我试图获得更多'功能'的STL编程风格,并有以下简化的案例
class Widget;
class Zot
{
public:
std::vector<Widget> Widgets;
void ProcessAWidget(int x, Widget w) { ... }
void Process()
{
int ctx=123;
std::for_each(Widgets.begin(), Widgets.end(),
std::bind(&Zot::ProcessAWidget, this, ctx, _1));
}
};
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来编写for_each调用的最后一个参数?
特别是必须明确提到这种感觉"错误",并且放弃类限定符也会很好.
如果编译器支持C++ 11 lambda:
std::for_each(Widgets.begin(),
Widgets.end(),
[&](Widget& a_w) { ProcessAWidget(ctx, a_w); });
Run Code Online (Sandbox Code Playgroud)
Lambdas救援:
std::for_each(Widgets.begin(), Widgets.end(),
[=](Widget & w) { ProcessAWidget(ctx, w); });
Run Code Online (Sandbox Code Playgroud)