Есть ли алгоритм STL / boost для проверки соответствия всех элементов в контейнере значению?

Существует ли алгоритм 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;
}
15
задан GrahamS 19 November 2010 в 12:38
поделиться