
Envoyé par
thhomas
Alors,
J'ai essayé de faire ce que tu m'as dit à savoir l'utilisation d'une classe fonction. Mais c'est là que je commence à caler. Je comprend pas le sens des termes qui interviennent dans la création de cette fonction. operator() c'est quoi? le nom de l'opérateur booléen?
Quand j'appelle ma fonction find_if, quel va être le 3ème paramètre? requete() avec quels paramètres?
Merci de ta réponse.
operator(), c'est l'opérateur (). C'est à dire une fonction qui prend en paramètre quelquechose. Une classe avec un opérateur ainsi défini s'appelle une foncteur. C'est à peu près équivalent à une fonction.
D'ailleurs, les deux exemples de code de fcharton sont équivalent. L'un utilise une fonction, l'autre un foncteur.
Le troisième paramètre de find_if, c'est un prédicat. Celà peut être une fonction ou un foncteur qui renvoie un booléen.
Quand tu écris
std::find_if(vect.begin(), vect.end(), P)
C'est grosso modo équivalent à
1 2 3 4 5 6 7 8
| for (int i = 0; i < vect.end(); i++)
{
bool res = P(vect[i]);
if (res == true)
{
// on renvoie un itérateur (pointeur) sur la position actuelle
}
} |
Partager