Partager via


<functional>

Définit les fonctions de bibliothèque STL (Standard Template Library) qui permettent de construire des objets function, également connu comme functors et leurs classeurs.Un objet de fonction est un objet d'un type qui définit operator().Un objet de fonction peut être un pointeur fonction, mais plus généralement, l'objet est utilisé pour stocker des informations supplémentaires sont accessibles pendant un appel de fonction.

#include <functional>

Notes

Les algorithmes nécessitent deux types d'objets de fonction : unaire et binaire.Les objets de fonction unaire nécessitent un argument, et objets function binaire nécessitent deux arguments.Un objet de fonction et les pointeurs fonction peuvent être passés en tant que prédicat à un algorithme, mais les objets function sont également adaptables et augmentent la portée, flexibilité et l'efficacité de la STL.Si, par exemple, une valeur devait être lié à une fonction avant d'être transmis à un algorithme, un pointeur fonction ne pourrait pas être utilisé.Adaptateurs de la fonction convertissent des pointeurs fonction en objets fonction adaptable qui peuvent être liés à une valeur.L'en-tête de <functional> contient également des cartes de fonction membre qui permettent des fonctions membres pour être appelée en tant qu'objets function adaptable.Les fonctions sont adaptables si elles ont des déclarations de type imbriqué spécifiant leur argument et types de retour.La norme C++ requiert que cette capacité d'adaptation est implémentée en ayant toutes les classes d'objet standard hériter des classes de base unary_function ou binary_function.Objets de fonction et leurs adaptateurs permettent la STL mettre à niveau les applications existantes et aider à intégrer la STL dans l'environnement de programmation C++.

Extensions TR1

Les fonctionnalités suivantes sont ajoutées dans l'implémentation de Visual C++ de TR1 :

  • A appeler signature est le nom d'un type de retour suivi d'une liste séparée par des virgules entre parenthèses de zéro ou plusieurs types d'arguments.

  • A appeler le wrapper est un objet d'un type de wrapper d'appel.

  • A type de wrapper d'appel est un type qui conserve un objet appelable et prend en charge une opération d'appel qui transmet à cet objet.

  • A objet appelable est un objet d'un type pouvant être appelé.

  • A type WRC est un pointeur fonction, un pointeur vers une fonction membre, un pointeur vers les données du membre ou un type de classe dont les objets peuvent apparaître immédiatement à gauche d'un opérateur d'appel de fonction.

  • A objet cible est l'objet appelable détenue par un objet de wrapper d'appel.

La pseudo-function INVOKE(f, t1, t2, ..., tN) signifie qu'une des opérations suivantes :

  • (t1.*f)(t2, ..., tN)Lorsque f est un pointeur vers une fonction membre de classe T et t1 est un objet de type T ou une référence à un objet de type T ou une référence à un objet d'un type dérivé T.

  • ((*t1).*f)(t2, ..., tN)Lorsque f est un pointeur vers une fonction membre de classe T et t1 n'est pas un des types décrits dans l'élément précédent.

  • t1.*fLorsque f est un pointeur vers les données de membre de classe T et t1 est un objet de type T ou une référence à un objet de type T ou une référence à un objet d'un type dérivé T.

  • (*t1).*fLorsque f est un pointeur vers les données membres de la classe classe T et t1 n'est pas un des types décrits dans l'élément précédent.

  • f(t1, t2, ..., tN)dans tous les autres cas.

La pseudo-function INVOKE(f, t1, t2, ..., tN, R) signifie INVOKE(f, t1, t2, ..., tN) implicitement converti en R.

Si un wrapper d'appel a un type de résultat faible, le type de son type de membre result_type est basé sur le type de T de l'objet cible du wrapper, comme suit :

  • Si T est un pointeur vers une fonction, result_type est un synonyme du type de retour de T.

  • Si T est un pointeur vers une fonction membre, result_type est un synonyme du type de retour de T.

  • Si T est un pointeur vers un membre de données, result_type est un synonyme pour le type déclaré de la donnée membre.

  • Si T est un type de classe possédant un type de membre result_type, puis result_type est un synonyme de T::result_type.

  • Sinon, il n'existe aucun membre result_type.

Chaque wrapper d'appel a un constructeur de copie.A wrapper simple appel est un wrapper d'appel qui a une affectation, opérateur et dont le constructeur de copie et l'opérateur d'assignation ne levez pas d'exceptions.A transfert d'appel wrapper est un wrapper d'appel qui peut être appelé à l'aide d'une liste d'arguments t1, t2, ..., tN, où chaque ti est une lvalue.

Les wrappers d'appel définis dans cette en-tête fonction appel opérateurs de support qui possèdent des arguments de types de T1, T2, ..., TN, où 0 <= N <= NMAX.Dans cette implémentation, la valeur de NMAX est de 10.

169de7b0.collapse_all(fr-fr,VS.110).gifClasses

bad_function_call

Une classe qui décrit une exception levée pour indiquer qu'un appel à operator() sur un fonction objet a échoué car l'objet était vide.

binary_negate

Une classe de modèle fournit une fonction membre qui nie la valeur de retour d'une fonction binaire spécifiée.

binder1st

Une classe de modèle fournissant un constructeur qui convertit un objet de fonction binaire en un objet de fonction unaire en liant le premier argument de la fonction binaire à une valeur spécifiée.

binder2nd

Une classe de modèle fournissant un constructeur qui convertit un objet de fonction binaire en un objet de fonction unaire en liant le deuxième argument de la fonction binaire à une valeur spécifiée.

const_mem_fun_ref_t

Une classe d'adaptateur qui permet à une fonction membre const sans argument pour être appelé comme un objet de fonction unaire lorsqu'il est initialisé avec un argument de référence.

const_mem_fun_t

Une classe d'adaptateur qui permet à une fonction membre const sans argument pour être appelé comme un objet de fonction unaire lorsqu'il est initialisé avec un argument de pointeur.

const_mem_fun1_ref_t

Une classe d'adaptateur qui permet à une fonction membre const qui accepte un argument unique pour être appelé comme un objet de fonction binaire lors de l'initialisation avec un argument de référence.

const_mem_fun1_t

Une classe d'adaptateur qui permet à une fonction membre const qui accepte un argument unique pour être appelé comme un objet de fonction binaire lors de l'initialisation avec un argument de pointeur.

fonction

Une classe qui encapsule un objet appelable.

hash

Une classe qui calcule un code de hachage pour une valeur.

is_bind_expression

Une classe qui teste si un type particulier est généré par l'appel de bind.

is_placeholder

Une classe qui teste si un type particulier est un espace réservé.

mem_fun_ref_t

Une classe d'adaptateur qui permet à un non_const fonction membre qui prend pas d'arguments pour être appelé comme un objet de fonction unaire lorsqu'il est initialisé avec un argument de référence.

mem_fun_t

Une classe d'adaptateur qui permet à un non_const fonction membre qui prend pas d'arguments pour être appelé comme un objet de fonction unaire lorsqu'il est initialisé avec un argument de pointeur.

mem_fun1_ref_t

Une classe d'adaptateur qui permet à un non_const fonction membre qui accepte un argument unique pour être appelé comme un objet de fonction binaire lors de l'initialisation avec un argument de référence.

mem_fun1_t

Une classe d'adaptateur qui permet à un non_const fonction membre qui accepte un argument unique pour être appelé comme un objet de fonction binaire lors de l'initialisation avec un argument de pointeur.

pointer_to_binary_function

Convertit un pointeur fonction binaire en une fonction binaire adaptable.

pointer_to_unary_function

Convertit un pointeur de fonction unaire dans une fonction unaire adaptable.

reference_wrapper

Une classe qui encapsule une référence.

result_of

Un struct qui contient le type de retour d'un objet encapsulé appelable.

unary_negate

Une classe de modèle fournit une fonction membre qui nie la valeur de retour d'une fonction unaire spécifié.

169de7b0.collapse_all(fr-fr,VS.110).gifFonctions

bind

Lie les arguments à un objet appelable.

bind1st

Un modèle de fonction d'assistance qui crée un adaptateur pour convertir un objet de fonction binaire en un objet de fonction unaire en liant le premier argument de la fonction binaire à une valeur spécifiée.

bind2nd

Un modèle de fonction d'assistance qui crée un adaptateur pour convertir un objet de fonction binaire en un objet de fonction unaire en liant le deuxième argument de la fonction binaire à une valeur spécifiée.

BIT_AND

Renvoie l'opérateur binaire AND des deux paramètres.

BIT_OR

Renvoie l'opérateur OR des deux paramètres.

BIT_XOR

Renvoie le binaire XOR des deux paramètres.

cref

Construit une variable const reference_wrapper à partir d'un argument.

mem_fn

Génère un wrapper simple appel.

mem_fun

Fonctions du modèle d'assistance utilisées pour construire des adaptateurs pour objet des fonctions membres lors de l'initialisation avec les arguments de pointeur de fonction.

mem_fun_ref

Une fonction de modèle d'assistance utilisée pour construire des cartes d'objet de fonction pour les fonctions de membre lors de l'initialisation avec les arguments de référence.

tels que not1

Retourne le complément d'un prédicat unaire.

not2

Retourne le complément d'un prédicat binaire.

ptr_fun

Un modèle de fonction d'assistance utilisée pour convertir unaires et binaire fonction pointeurs, respectivement, dans des fonctions adaptables unaires et binaires.

ref

Construit un reference_wrapper à partir d'un argument.

swap

Permute les deux function objets.

169de7b0.collapse_all(fr-fr,VS.110).gifStructures

binary_function

Classe de base vide qui définit les types qui peuvent être hérités par la classe dérivée qui fournit un objet de fonction binaire.

divise

La classe fournit un objet de fonction prédéfinie qui effectue l'opération arithmétique de division sur les éléments d'un type valeur spécifié.

equal_to

Un prédicat binaire qui teste si une valeur d'un type spécifié est égale à une autre valeur de ce type.

une plus grande

Un prédicat binaire qui teste si une valeur d'un type spécifié est supérieur à une autre valeur de ce type.

greater_equal

Un prédicat binaire qui teste si une valeur d'un type spécifié est supérieur ou égal à une autre valeur de ce type.

moins

Un prédicat binaire qui teste si une valeur d'un type spécifié est inférieur à une autre valeur de ce type.

less_equal

Un prédicat binaire qui teste si une valeur d'un type spécifié est inférieur ou égal à une autre valeur de ce type.

logical_and

La classe fournit un objet de fonction prédéfinie qui effectue l'opération de conjonction logique sur les éléments d'un type valeur spécifié et teste la vérité ou falsity du résultat.

logical_not

La classe fournit un objet de fonction prédéfinie qui effectue l'opération de négation logique sur les éléments d'un type valeur spécifié et teste la vérité ou falsity du résultat.

logical_or

La classe fournit un objet de fonction prédéfinie qui effectue l'opération de disjonction logique sur les éléments d'un type valeur spécifié et teste la vérité ou falsity du résultat.

signe moins

La classe fournit un objet de fonction prédéfinie qui effectue l'opération de soustraction arithmétique sur les éléments d'un type valeur spécifié.

modulus

La classe fournit un objet de fonction prédéfinie qui effectue l'opération de modulo arithmétique sur des éléments d'un type valeur spécifié.

Multiplie

La classe fournit un objet de fonction prédéfinie qui effectue l'opération de multiplication arithmétique sur les éléments d'un type valeur spécifié.

Inverser

La classe fournit un objet de fonction prédéfinie qui renvoie la valeur négative d'une valeur d'élément.

Not_Equal_To

Un prédicat binaire qui teste si une valeur d'un type spécifié n'est pas égal à une autre valeur de ce type.

signe plus

La classe fournit un objet de fonction prédéfinie qui effectue l'opération d'addition arithmétique sur les éléments d'un type valeur spécifié.

unary_function

Classe de base vide qui définit les types qui peuvent être hérités par la classe dérivée qui fournit un objet de fonction unaire.

169de7b0.collapse_all(fr-fr,VS.110).gifObjets

_1

Espaces réservés pour les arguments remplaçables.

169de7b0.collapse_all(fr-fr,VS.110).gifOpérateurs

opérateur ==

N'autorise pas la comparaison d'égalité d'objets pouvant être appelés.

opérateur! =

N'autorise pas d'objets pouvant être appelé par comparaison d'inégalité.

Voir aussi

Référence

Sécurité des threads dans la bibliothèque C++ standard

Modèles Standard

Autres ressources

<functional> membres

Fichiers d'en-tête