Namespaces
Variants

C++ named requirements: Predicate

From cppreference.net
C++ named requirements

Les Predicate requirements décrivent un objet appelable qui retourne une valeur BooleanTestable .

Predicate est généralement utilisé avec des algorithmes qui prennent des données d'entrée (objets individuels/conteneurs) et un prédicat, qui est ensuite appelé sur les données d'entrée pour décider de la suite de l'action. Quelques exemples d'utilisation de prédicat dans la bibliothèque standard C++ sont :

  • std::all_of , std::any_of , std::none_of Prendent un tableau d'éléments et un prédicat en entrée. Appellent le prédicat sur les éléments individuels de l'entrée, et retournent vrai si pour tous/au moins un/aucun élément, le prédicat retourne vrai.
  • std::find_if Prend une séquence d'éléments et un prédicat. Retourne le premier élément de la séquence pour lequel le prédicat renvoie une valeur égale à true .

La description des fonctionnalités algorithmiques, donnée ci-dessus, est sommaire et vise à expliquer Predicate en termes simples. Pour des informations détaillées, veuillez consulter les pages individuelles.

En d'autres termes, si un algorithme prend un Predicate pred et un itérateur first , il devrait être capable de tester l'objet du type pointé par l'itérateur first en utilisant le prédicat donné via une construction comme if ( pred ( * first ) ) { /*...*/ } .

L'objet fonction pred ne doit pas appliquer de fonction non constante via l'itérateur déréférencé et doit accepter un argument const , avec le même comportement que l'argument soit const ou non- const . Cet objet fonction peut être un pointeur vers une fonction ou un objet d'un type avec un opérateur d'appel de fonction approprié.

Exigences

Rapports de défauts

Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.

DR Applicable à Comportement publié Comportement corrigé
LWG 3031 C++98 les exigences sur les valeurs const étaient insuffisantes exigences renforcées

Voir aussi

(C++20)
spécifie qu'un type appelable est un prédicat booléen
(concept)