函数原型:
template <class InputIterator, class UnaryPredicate> bool all_of (InputIterator first, InputIterator last, UnaryPredicate pred);
作用:
对[first,last)范围内的所有元素进行pred操作,如果pred都返回true,则all_of函数返回true,如果范围为空则返回false.
函数的行为类似与下面函数
template<class InputIterator, class UnaryPredicate> bool all_of (InputIterator first, InputIterator last, UnaryPredicate pred) { while (first!=last) { if (!pred(*first)) return false; ++first; } return true; }
函数参数:
first,last
输入迭代器执行输入序列的开始和结束位置,序列的范围是[first,last),包含first到last的所有元素,包括first元素,但不包含last元素。
pred
一元函数接受一个序列范围内的元素,返回一个可以转换为bool的值。函数的返回值反应了元素是否满足pred检测的情况。函数内部不应该
修改函数参数。这项只能是函数指针或者函数对象。
返回值
返回true表示范围内的所有元素都满足pred要求,范围为空时返回false,其他情况也返回false。
// all_of example #include <iostream> // std::cout #include <algorithm> // std::all_of #include <array> // std::array int main () { std::array<int,8> foo = {3,5,7,11,13,17,19,23}; if ( std::all_of(foo.begin(), foo.end(), [](int i){return i%2;}) ) std::cout << "All the elements are odd numbers.\n"; return 0; }
ouput:
All the elements are odd numbers.
时间复杂度:
O(n)
异常情况:
两种情况会抛出异常,一种时pred,另一种操作迭代器不当。 无效的参数会导致未定义的行为。