【问题标题】:How to use for_each with additional parameters?如何使用带有附加参数的 for_each?
【发布时间】:2014-07-04 14:57:22
【问题描述】:

我想弄清楚for_each() 是如何使用的。首先,我改造了这个循环

for(int i = 0; i < myvector.size(); ++i){
    myvector[i].a.b. = true;
}

进入

auto enable [](Myvect &mv) {mv.a.b = true;};
for_each(myvector.begin(), myvector.end(), enable);

这很好用。


现在我想将for_each 构造用于以下循环:

for(int i = 0; i < myvector.size(); ++i){
    foo(local_var, myvector[i]);
}

这可能吗?

【问题讨论】:

  • 为什么不呢?只需将 foo(...) 放入您的 lambda 中即可。
  • 当您说“这很好”时,您是否真的运行了代码并检查了结果?
  • @KerrekSB,它已编译:D 我会在一分钟内测试它。
  • @Vorac:我推荐this advice提问...
  • @KerrekSB,对不起,我在将代码重写到 qiestion 时忘记了 &。你知道,这不是实际的代码。

标签: c++ c++11 foreach


【解决方案1】:

您可以简单地将foo 放入 lambda 函数中:

for_each( myvector.begin(), myvector.end(), 
                           [local_var](Myvect& mv) // notice reference
                           { 
                           // Assuming you want to modify mv
                              foo(local_var, mv ); 
                           }
        );

【讨论】:

  • 我没有想到这一点(借口:周五下午晚些时候)。此外,我没想过将 lambda 放入 for_each 构造中。谢谢。
  • @Vorac,如果你不喜欢 for_each 中的 lambda,你总是可以有一个仿函数。
猜你喜欢
  • 2018-05-24
  • 2019-02-10
  • 2019-03-31
  • 1970-01-01
  • 2014-10-03
  • 1970-01-01
  • 2011-09-27
  • 2016-07-12
  • 1970-01-01
相关资源
最近更新 更多