Les foncteurs

 

Les foncteurs sont des classes qui définissent l'opérateur () , appelé opérateur de fonction.

Les foncteurs ne sont pas facile à maîtriser, mais ajoutent un grand nombre de fonctionnalités à la STL

Leur

Leur principal rôle est de pouvoir appliquer des opérations sur les objets manipulés.

 

Un grand nombre de foncteurs sont prédéfinis dans la STL, qui dérivent tous des 3 types de base:

- generator, fonction qui est appelée sans argument

- unary_function, qui est appelée avec un argument

- binary_function, qui est appelé avec deux argument

 

Voici une liste des principaux foncteurs: ( a voir dans "function.h" )

plus
minus
multiplies (appelée times auparavant)
divides
modulus
negate
equal_to
not_equal_to
greater
less
greater_equal
less_equal
logical_and
logical_or
logical_not
subtractive_rng
identity
project1st
project2nd
sel
project2nd
select1st
select2nd
unary_function
binary_function
unary_compose
binary_compose
unary_negate
binary_negate
binder1st
binder2nd
pointer_to_unary_function
pointer_to_binary_function
...

 


La manière la plus aisée de les comprendre est d'en regarder une implémentation:

Plus

Définition de la fonction

template <class T>
struct plus : binary_function<T, T, T> {
T operator()(const T& x, const T& y) const { return x + y; }
};

Exemple d'utilisation

const int N = 1000;
vector<double> V1(N);
vector<double> V2(N);
vector<double> V3(N);

iota(V1.begin(), V1.end(), 1); // premiere case a 1, 2eme a 2, ...
fill(V2.begin(), V2.end(), 75); // toutes les cases a 75

assert(V2.size() >= V1.size() && V3.size() >= V1.size()); // on verifie que les tailles des tableaux sont conformes
transform(V1.begin(), V1.end(), V2.begin(), V3.begin(), plus<double>()); // c'est ici qu'on utilise notre foncteur: on additionne V1 et V2 dand V3

 

/Index.htm#1">Index
<< Précédent
Index
suivant >>

 

/html>