Существует ли алгоритм STL / boost, который проверяет, соответствуют ли все элементы между двумя итераторами заданному значению? Или, альтернативно, предикат возвращает истину
для всех из них?
т.е. что-то вроде
template<class InputIterator, class T>
InputIterator all_match (InputIterator first, InputIterator last, const T& value)
{
bool allMatch = true;
while(allMatch && first!=last)
allMatch = (value == *first++);
return allMatch;
}
Или
template <class InputIterator, class Predicate>
bool all_true (InputIterator first, InputIterator last, Predicate pred)
{
bool allTrue = true;
while (allTrue && first != last)
allTrue = pred(*first++);
return allTrue;
}