2013-12-24 3 views
1

Такие функции, как std::find_if из заголовка algorithm, действительно полезны, но 1 серьезным ограничением для меня является тот факт, что я могу использовать только 1 предикат для каждого вызова до count_if.Алгоритмы C++ 11 с несколькими предикатами

Например, для контейнера, такого как std::vector Я хотел бы применить, в то же время, к той же итерации find_if, несколько предикатов; что-то в стандартной библиотеке делает это возможным, сохраняя этот функциональный подход?

ответ

6

Просто объединить их с лямбда:

std::find_if(begin(vec), end(vec), 
    [](elem_t val) { 
     return f1(val) || f2(val); 
    }); 
+0

о, это гораздо проще, чем я ожидал – user2485710

+0

, но при таком подходе результаты для различных предикатов в конечном итоге происходит в том же выходе, что, если я хотел бы отправить результат конкретному объекту для каждого предиката? – user2485710

+0

@ user2485710 - для этого вы пишете свой собственный алгоритм. –

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