add algorithm::all_of, any_of, none_of

master
Daniel Kolesa 2015-04-20 02:21:27 +01:00
parent 6d60b051e8
commit 9885909485
1 changed files with 22 additions and 0 deletions

View File

@ -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