如何在成员函数上使用std :: for_each

Rob*_*ker 3 c++ stl

我试图获得更多'功能'的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调用的最后一个参数?

特别是必须明确提到这种感觉"错误",并且放弃类限定符也会很好.

hmj*_*mjd 8

如果编译器支持C++ 11 lambda:

std::for_each(Widgets.begin(),
              Widgets.end(),
              [&](Widget& a_w) { ProcessAWidget(ctx, a_w); });
Run Code Online (Sandbox Code Playgroud)


Ker*_* SB 7

Lambdas救援:

std::for_each(Widgets.begin(), Widgets.end(),
              [=](Widget & w) { ProcessAWidget(ctx, w); });
Run Code Online (Sandbox Code Playgroud)