2014-07-04 6 views
0

Я пытаюсь выяснить, как используется for_each(). Во-первых, я трансформировал эту петлюКак использовать 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]); 
} 

Возможно ли это?

+2

Почему нет? Просто поместите 'foo (...)' внутри вашей лямбды. – Quentin

+2

Когда вы говорите «это сработало хорошо», вы действительно запустили код и проверили результаты? –

+0

@KerrekSB, он скомпилирован: D Я проведу его через минуту. – Vorac

ответ

1

Вы можете просто положить foo внутри лямбда-функции:

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

Я не думал об этом (извините: пятница поздно вечером). Кроме того, я не думал о том, чтобы помещать лямбду внутри конструкции 'for_each'. Благодарю. – Vorac

+0

@ Vorac, если вам не нравится lambda внутри 'for_each', вы всегда можете иметь функтор. – P0W

+1

Ужасный отступ! –

Смежные вопросы