std :: for_each usage - >捕获变量

时间:2015-09-05 13:53:06

标签: 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进行比较?什么是最好的解决方案?

1 个答案:

答案 0 :(得分:1)

将其设为[&](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();
}

看起来有点干净。