C++ 如何使用带有附加参数的每个参数?

C++ 如何使用带有附加参数的每个参数?,c++,c++11,foreach,C++,C++11,Foreach,我正在试图弄清楚如何使用for_each()。首先,我转换了这个循环 for(int i = 0; i < myvector.size(); ++i){ myvector[i].a.b. = true; } 这很有效 现在,我想为以下循环使用for_each构造: for(int i = 0; i < myvector.size(); ++i){ foo(local_var, myvector[i]); } for(int i=0;i

我正在试图弄清楚如何使用
for_each()
。首先,我转换了这个循环

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


现在,我想为以下循环使用
for_each
构造:

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

这可能吗?

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

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

为什么不呢?只要把
foo(…)
放在你的lambda中。当你说“这很好”时,你真的运行了代码并检查了结果吗?@KerrekSB,它编译了:D我马上测试它。@Vorac:我建议提问…@KerrekSB,对不起,我在将代码重写到qiestion中时忘记了a&。这不是实际的代码,你知道。我没有想到(借口:周五下午晚些时候)。此外,我没有想到将lambda放入
for_each
构造中。谢谢。@Vorac,如果你不喜欢每个
中的lambda,你可以有一个函子。
for_each( myvector.begin(), myvector.end(), 
                           [local_var](Myvect& mv) // notice reference
                           { 
                           // Assuming you want to modify mv
                              foo(local_var, mv ); 
                           }
        );