我正在尝试采用更“功能”的 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));
   }
};

有没有更好的方法来为 for_each 调用编写最后一个参数?

特别是必须明确提及这感觉“错误”,并且删除类限定符也会很好。

最佳答案

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

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

关于c++ - 如何在成员函数上使用 std::for_each,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12058603/

10-11 23:06
查看更多