add algorithm::all_of, any_of, none_of
parent
6d60b051e8
commit
9885909485
|
@ -196,6 +196,7 @@ namespace octa {
|
|||
return max_element(PointerRange<const T>(il.get(),
|
||||
il.get() + il.length())).first();
|
||||
}
|
||||
|
||||
template<typename T, typename C>
|
||||
inline T max(InitializerList<T> il, C compare) {
|
||||
return max_element(PointerRange<const T>(il.get(),
|
||||
|
@ -208,6 +209,27 @@ namespace octa {
|
|||
func(range.first());
|
||||
return move(func);
|
||||
}
|
||||
|
||||
template<typename R, typename P>
|
||||
bool all_of(R range, P pred) {
|
||||
for (; !range.empty(); range.pop_first())
|
||||
if (!pred(range.first())) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
template<typename R, typename P>
|
||||
bool any_of(R range, P pred) {
|
||||
for (; !range.empty(); range.pop_first())
|
||||
if (pred(range.first())) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
template<typename R, typename P>
|
||||
bool none_of(R range, P pred) {
|
||||
for (; !range.empty(); range.pop_first())
|
||||
if (pred(range.first())) return false;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue