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:
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 75assert(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
<< Précédent | /Index.htm#1">Index |