Namespaces
Variants

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

De fr.cppreference.net
 
 
Bibliothèque d'algorithmes
Algorithmes contraints et algorithmes sur plages (C++20)
Algorithmes contraints, p.ex. ranges::copy, ranges::sort, ...
Opérations de séquence non modificatrices    
Opérations par lots
(C++17)
Opérations de recherche
Opérations de séquence modificatrices
Opérations de copie
(C++11)
(C++11)
Opérations d'échange
Opérations de transformation
Opérations de génération
Opérations de suppression
Opérations de changement d'ordre
(jusqu'à C++17)(C++11)
(C++20)(C++20)
Opérations d'échantillonnage
(C++17)

Tri et opérations connexes
Opérations de partitionnement
(C++11)    

Opérations de tri
Opérations de recherche binaire
(sur plages partitionnées)
Opérations sur les ensembles (sur plages triées)
Opérations de fusion (sur plages triées)
Opérations sur les tas
Opérations de minimum/maximum
(C++11)
(C++17)
Opérations de comparaison lexicographique
Opérations de permutation


 
Défini dans l'en-tête <algorithm>
template< class InputIt, class UnaryPred >
bool all_of( InputIt first, InputIt last, UnaryPred p );
(1) (depuis C++11)
(constexpr depuis C++20)
template< class InputIt, class UnaryPred >
bool any_of( InputIt first, InputIt last, UnaryPred p );
(2) (depuis C++11)
(constexpr depuis C++20)
template< class InputIt, class UnaryPred >
bool none_of( InputIt first, InputIt last, UnaryPred p );
(3) (depuis C++11)
(constexpr depuis C++20)
template< class ExecutionPolicy, class ForwardIt, class UnaryPred >
bool all_of( ExecutionPolicy&& policy,
             ForwardIt first, ForwardIt last, UnaryPred p );
(4) (depuis C++17)
template< class ExecutionPolicy, class ForwardIt, class UnaryPred >
bool any_of( ExecutionPolicy&& policy,
             ForwardIt first, ForwardIt last, UnaryPred p );
(5) (depuis C++17)
template< class ExecutionPolicy, class ForwardIt, class UnaryPred >
bool none_of( ExecutionPolicy&& policy,
              ForwardIt first, ForwardIt last, UnaryPred p );
(6) (depuis C++17)
1) Vérifie si le prédicat unaire p retourne true pour tous les éléments de la plage [first, last).
2) Vérifie si le prédicat unaire p retourne true pour au moins un élément de la plage [first, last).
3) Vérifie si le prédicat unaire p retourne true pour aucun des éléments de la plage [first, last).
4-6) Identique à (1-3), mais exécuté selon policy.
Ces surcharges ne participent à la résolution de surcharge que si la valeur de l'expression suivante est true:

std::is_execution_policy_v<std::decay_t<ExecutionPolicy>>

(jusqu'à C++20)

std::is_execution_policy_v<std::remove_cvref_t<ExecutionPolicy>>

(depuis C++20)

Paramètres

first, last - la paire d'itérateurs définissant la plage d'éléments à examiner
policy - la politique d'exécution à utiliser
p - prédicat unaire .

L'expression p(v) doit être convertible en bool pour chaque argument v de type (éventuellement const) VT, où VT est le type de valeur de InputIt, indépendamment de la catégorie de valeur, et ne doit pas modifier v. Ainsi, un type de paramètre de VT&n'est pas autorisé, ni VT sauf si pour VT un déplacement équivaut à une copie(depuis C++11). ​

Exigences de type
-
InputIt doit satisfaire les exigences de LegacyInputIterator.
-
ForwardIt doit satisfaire les exigences de LegacyForwardIterator.
-
UnaryPred doit satisfaire les exigences de Predicate.

Valeur de retour

La plage a un true élément Oui Non
 La plage a un false élément  Oui Non Oui     Non[1]
all_of false true false true
any_of true true   false     false  
none_of   false     false   true true
  1. ↑ La plage est vide dans ce cas.

Complexité

1-6) Au plus std::distance(first, last) applications de p.

Exceptions

4-6) Pendant le processus d'exécution :
  • Si les ressources mémoire temporaires nécessaires à la parallélisation ne sont pas disponibles, std::bad_alloc est lancé.
  • Si une exception non interceptée est levée lors de l'accès aux objets via un argument d'algorithme, le comportement est déterminé par la politique d'exécution (pour les politiques standard, std::terminate est invoqué).

Notes

Macro de test de fonctionnalité Valeur Std Fonctionnalité
__cpp_lib_parallel_algorithm 202506L (C++26) Algorithmes de plage parallèles, (4-6)

Implémentation possible

Voir aussi les implémentations de

all_of
template<class InputIt, class UnaryPred>
constexpr bool all_of(InputIt first, InputIt last, UnaryPred p)
{
    return std::find_if_not(first, last, p) == last;
}
any_of
template<class InputIt, class UnaryPred>
constexpr bool any_of(InputIt first, InputIt last, UnaryPred p)
{
    return std::find_if(first, last, p) != last;
}
none_of
template<class InputIt, class UnaryPred>
constexpr bool none_of(InputIt first, InputIt last, UnaryPred p)
{
    return std::find_if(first, last, p) == last;
}

Exemple

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

Sortie :

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

Voir aussi

vérifie si un prédicat est true pour tous, certains ou aucun des éléments d'une plage
(objet fonction d'algorithme)