std::all_of, std::any_of, std::none_of
Template:cpp/algorithm/sidebar Template:ddcl list begin <tr class="t-dsc-header">
<td><algorithm>
<td></td> <td></td> </tr> <tr class="t-dcl ">
<td >bool all_of( InputIterator first, InputIterator last, UnaryPredicate p );
<td > (1) </td> <td > (since C++11) </td> </tr> <tr class="t-dcl ">
<td >bool any_of( InputIterator first, InputIterator last, UnaryPredicate p );
<td > (2) </td> <td > (since C++11) </td> </tr> <tr class="t-dcl ">
<td >bool none_of( InputIterator first, InputIterator last, UnaryPredicate p );
<td > (3) </td> <td > (since C++11) </td> </tr> Template:ddcl list end
1) Checks if unary predicate p
returns Template:cpp for all elements in the range [first, last)
.
2) Checks if unary predicate p
returns Template:cpp for at least one element in the range [first, last)
.
3) Checks if unary predicate p
returns Template:cpp for no elements in the range [first, last)
.
Contents |
Parameters
first, last | - | the range of elements to examine |
p | - | unary predicate . The expression p(v) must be convertible to bool for every argument |
Return value
1) Template:cpp if unary predicate returns Template:cpp for all elements in the range, Template:cpp otherwise. Returns Template:cpp if the range is empty.
2) Template:cpp if unary predicate returns Template:cpp for at least one element in the range, Template:cpp otherwise. Returns Template:cpp if the range is empty.
3) Template:cpp if unary predicate returns Template:cpp for no elements in the range, Template:cpp otherwise. Returns Template:cpp if the range is empty.
Complexity
At most last
- first
applications of the predicate
Possible implementation
Example
#include <vector> #include <numeric> #include <algorithm> #include <iterator> #include <iostream> #include <functional> int main() { std::vector<int> v(10, 2); std::partial_sum(v.begin(), v.end(), v.begin()); std::cout << "Among the numbers: "; std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, " ")); if (std::all_of(v.begin(), v.end(), [](int i){ return i % 2==0; })) { std::cout << "\nAll numbers are even\n"; } if (std::none_of(v.begin(), v.end(), std::bind(std::modulus<int>(), std::placeholder::_1, 2))) { std::cout << "None of them are odd\n"; } struct DivisibleBy { int d; DivisibleBy(int n) : d(n) {} bool operator()(int n) const { return n % d == 0; } }; if( std::any_of(v.begin(), v.end(), DivisibleBy(7))) { std::cout << "At least one number is divisible by 7\n"; } }
Output:
Among the numbers: 2 4 6 8 10 12 14 16 18 20 All numbers are even None of them are odd At least one number is divisible by 7