The following code example is taken from the book
The C++ Standard Library - A Tutorial and Reference, 2nd Edition
by Nicolai M. Josuttis, Addison Wesley Longman, 2012
Copyright © 2012 by Pearson Education, Inc. and Nicolai M. Josuttis
template <typename InputIterator, typename Tp>
inline InputIterator
find_before (InputIterator first, InputIterator last, const Tp& val)
{
if (first==last) {
return first;
}
InputIterator next(first);
++next;
while (next!=last && !(*next==val)) {
++next;
++first;
}
return first;
}
template <typename InputIterator, typename Pred>
inline InputIterator
find_before_if (InputIterator first, InputIterator last, Pred pred)
{
if (first==last) {
return first;
}
InputIterator next(first);
++next;
while (next!=last && !pred(*next)) {
++next;
++first;
}
return first;
}