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

标签 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));
   }
};

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

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

最佳答案

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

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/

相关文章:

c++ - C4503 警告?我该如何解决/摆脱它们?

c++ - 在 boost::statecart 中记录状态变化

c++ - 未声明的标识符 'QVariant' 将旧版 Qt 4 转换为 5

c++ - 为什么在 WM_NCCREATE 之后 MDI 子窗口不存在?

c++ - 用 std::valarray 替换 POD C 样式数组是个坏主意吗?

c++ - std::sort 不适用于重载 < 运算符的用户定义对象

c++ - 组合相同的唯一 ID 项目

c++ - 在 CMake 中正确配置 boost

c++ - std::begin 和 std::end 不能使用指针和引用,为什么?

c++ - 在一组中保存一堆 const char* 的最简单、最安全的方法?