Translations of this page?:

std::all_of,std::any_of,std::none_of

<algorithm>内に定義されています。

template< class InputIterator, class UnaryPredicate >
bool all_of( InputIterator first, InputIterator last, UnaryPredicate p );
template< class InputIterator, class UnaryPredicate >
bool any_of( InputIterator first, InputIterator last, UnaryPredicate p );
template< class InputIterator, class UnaryPredicate >
bool none_of( InputIterator first, InputIterator last, UnaryPredicate p );
  1. [first, last)内の全ての要素に対し、単項条件式pがtrueを返すか判定します。
  2. [first, last)内のいずれか要素に対し、単項条件式pがtrueを返すか判定します。
  3. [first, last)内の全ての要素に対し、単項条件式pがfalseを返すか判定します。

引数

first, last - 探索される要素の範囲

p - 単項の条件式

返値

計算量

last - first回、条件式を適用するのとほぼ同等

等価関数

all_of

template< class InputIterator, class UnaryPredicate >
bool all_of(InputIterator first, InputIterator last, UnaryPredicate p)
{
    for (; first != last; ++first) {
        if (!p(*first)) return false;
    }
    return true;
}

any_of

template< class InputIterator, class UnaryPredicate >
bool any_of(InputIterator first, InputIterator last, UnaryPredicate p)
{
    for (; first != last; ++first) {
        if (p(*first)) return true;
    }
    return false;
}

none_of

template< class InputIterator, class UnaryPredicate >
bool none_of(InputIterator first, InputIterator last, UnaryPredicate p)
{
    for (; first != last; ++first) {
        if (p(*first)) return false;
    }
    return true;
}

#include <vector>
#include <numeric>
#include <algorithm>
#include <iterator>
#include <iostream>
#include <functional>
 
int main()
{
    std::vector<int> v(10, 2);
    std::partial_sum(v.begin(), v.end(), v.begin());
    std::cout << "Among the numbers: ";
    std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, " "));
 
    if (std::all_of(v.begin(), v.end(), [](int i){ return i % 2==0; })) {
        std::cout << "\nAll numbers are even\n";
    }
    if (std::none_of(v.begin(), v.end(), std::bind(std::modulus<int>(), _1, 2))) {
        std::cout << "None of them are odd\n";
    }
    struct DivisibleBy
    {
        int d;
        DivisibleBy(int n) : d(n) {}
        bool operator()(int n) const { return n % d == 0; }
    };
 
    if( std::any_of(v.begin(), v.end(), DivisibleBy(7))) {
        std::cout << "At least one number is divisible by 7\n";
    }
}

出力:

Among the numbers: 2 4 6 8 10 12 14 16 18 20
All numbers are even
None of them are odd
At least one number is divisible by 7
 
• • • SitemapRecent changesRSScc