c++ - std::for_each 用法 -> 捕获变量

标签 c++ foreach stl

<分区>

      void reset(const std::string& a, const std::string& b) const
  {
   std::for_each(this->begin(), this->end(), [&](const std::string& a, const std::string& b, ClassA* cv)
           {
        if( cv->getA == a && cv->getb == b)
            cv->reset();
           });

  }

是否有一种简单的方法可以比较 ClassA 的成员函数与 a 和 b 与 for_each?其他最佳解决方案是什么?

最佳答案

使其成为[&](ClassA* cv){ ... }。参数 ab 由您的 [&] 捕获并在 lambda 中可用(它们不作为参数传递)。

您还可以使用:

void reset(const std::string& a, const std::string& b) const {
    for (auto cv : *this)
        if(cv->getA == a && cv->getb == b)
            cv->reset();
}

看起来更干净一些。

关于c++ - std::for_each 用法 -> 捕获变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32413835/

相关文章:

c# - 如果我只能定义一个 GetEnumerator,为什么要实现 IEnumerable(T)?

带有嵌套 foreach 的 PHP 数组

c# - LINQ select 内部的方法调用(效率)

multithreading - 使用互锁增量来增量STL映射的value字段。它是线程安全的吗?

c++ - 将 unique_ptr 数组移动到另一个数组的正确方法

c++ - 相同的字符串到多个流

c++ - OpenGL glGeneratemipmap 和帧缓冲区

c++ - 这个返回声明中发生了什么?

c++ - 在特定的 Windows DLL 模块中分配内存

c++ - SSE 内在函数检查零标志