std::all_of,std::any_of,std::none_of (3) - Linux Manuals
std::all_of,std::any_of,std::none_of: std::all_of,std::any_of,std::none_of
NAME
std::all_of,std::any_of,std::none_of - std::all_of,std::any_of,std::none_of
Synopsis
Defined in header <algorithm>
template< class InputIt, class UnaryPredicate > (since C++11)
bool all_of( InputIt first, InputIt last, UnaryPredicate p ); (until C++20)
template< class InputIt, class UnaryPredicate > (since C++20)
constexpr bool all_of( InputIt first, InputIt last, UnaryPredicate p );
template< class ExecutionPolicy, class ForwardIt, class UnaryPredicate > (2) (since C++17)
bool all_of( ExecutionPolicy&& policy, ForwardIt first, ForwardIt last, UnaryPredicate p );
template< class InputIt, class UnaryPredicate > (since C++11)
bool any_of( InputIt first, InputIt last, UnaryPredicate p ); (until C++20)
template< class InputIt, class UnaryPredicate > (1) (since C++20)
constexpr bool any_of( InputIt first, InputIt last, UnaryPredicate p );
template< class ExecutionPolicy, class ForwardIt, class UnaryPredicate > (4) (since C++17)
bool any_of( ExecutionPolicy&& policy, ForwardIt first, ForwardIt last, UnaryPredicate p ); (3)
template< class InputIt, class UnaryPredicate > (since C++11)
bool none_of( InputIt first, InputIt last, UnaryPredicate p ); (until C++20)
template< class InputIt, class UnaryPredicate > (5) (since C++20)
constexpr bool none_of( InputIt first, InputIt last, UnaryPredicate p );
template< class ExecutionPolicy, class ForwardIt, class UnaryPredicate > (6) (since C++17)
bool none_of( ExecutionPolicy&& policy, ForwardIt first, ForwardIt last, UnaryPredicate p );
1) Checks if unary predicate p returns true for all elements in the range [first, last).
3) Checks if unary predicate p returns true for at least one element in the range [first, last).
5) Checks if unary predicate p returns true for no elements in the range [first, last).
2,4,6) Same as (1,3,5), but executed according to policy. These overloads do not participate in overload resolution unless std::is_execution_policy_v<std::decay_t<ExecutionPolicy>> is true
Parameters
first, last - the range of elements to examine
policy - the execution policy to use. See execution_policy for details.
p - The expression p(v) must be convertible to bool for every argument v of type (possibly const) VT, where VT is the value type of InputIt, regardless of value_category, and must not modify v. Thus, a parameter type of VT&is not allowed
Type requirements
-
InputIt must meet the requirements of LegacyInputIterator.
-
ForwardIt must meet the requirements of LegacyForwardIterator.
-
UnaryPredicate must meet the requirements of Predicate.
Return value
1-2) true if unary predicate returns true for all elements in the range, false otherwise. Returns true if the range is empty.
3-4) true if unary predicate returns true for at least one element in the range, false otherwise. Returns false if the range is empty.
5-6) true if unary predicate returns true for no elements in the range, false otherwise. Returns true if the range is empty.
Complexity
1,3,5) At most last - first applications of the predicate
2,4,6) O(last-first) applications of the predicate
Exceptions
The overloads with a template parameter named ExecutionPolicy report errors as follows:
* If execution of a function invoked as part of the algorithm throws an exception and ExecutionPolicy is one of the standard_policies, std::terminate is called. For any other ExecutionPolicy, the behavior is implementation-defined.
* If the algorithm fails to allocate memory, std::bad_alloc is thrown.
Possible implementation
First version
Second version
Third version
Example
// Run this code