Is there a function similar to accummulate()
but provides a unary pre-condition to filter the linear container when performing the operation? I search for accummulate_if
but there isn't any. Thanks!
update: Thanks for all the kind answers. I end up doing it this way:
std::for_each(v.begin(), v.end(), [&](int x){if (Pred) sum += x;});
Must you really use an algorithm? Something as simple as below won't do?
for (const auto& v: V) if(pred(v)) sum+=v;
Sam's idea is also good. But I would do it with lambda:
sum = accumulate( V.begin(), V.end(), 0, [](int a, int b){return pred(b)? a+b: a;} );
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With