ptr_fun Function
Fonctions d'assistance de modèle utilisées pour convertir les pointeurs fonction unaires et binaires, respectivement, dans les fonctions adaptables unaires et binaires.
template<class Arg, class Result>
pointer_to_unary_function<Arg, Result, Result (*)(Arg)>
ptr_fun(Result (*_pfunc)(Arg));
template<class Arg1, class Arg2, class Result>
pointer_to_binary_function<Arg1, Arg2, Result, Result (*)(Arg1, Arg2)>
ptr_fun(Result (*_pfunc)(Arg1, Arg2));
Paramètres
- _pfunc
Le pointeur fonction unaire ou binaire à convertir en une fonction adaptable.
Valeur de retour
La première fonction de modèle retourne la fonction unaire pointer_to_unary_function <Arg, Résultat> (*_pfunc).
La fonction binaire pointer_to_binary_function <Arg1, Arg2, Résultat> de second modèle de fonction retourne la valeur (*_pfunc).
Notes
Un pointeur fonction est un objet de fonction et peut être passé à n'importe quel algorithme de modèles Standard qui attend une fonction comme paramètre, mais il n'est pas adaptable.Pour l'utiliser avec un adaptateur, tel que lier une valeur lui ou l'utiliser avec un inverseur, il doit être fourni avec les types imbriqués qui rendent une telle adaptation possible.La conversion des pointeurs fonction unaires et binaires par la fonction d'assistance d' ptr_fun permet les adaptateurs de fonction d'utiliser des pointeurs fonction unaires et binaires.
Exemple
// functional_ptr_fun.cpp
// compile with: /EHsc
#include <vector>
#include <algorithm>
#include <functional>
#include <cstring>
#include <iostream>
int main( )
{
using namespace std;
vector <char*> v1;
vector <char*>::iterator Iter1, RIter;
v1.push_back ( "Open" );
v1.push_back ( "up" );
v1.push_back ( "the" );
v1.push_back ( "opalescent" );
v1.push_back ( "gates" );
cout << "Original sequence contains: " ;
for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; ++Iter1 )
cout << *Iter1 << " ";
cout << endl;
// To search the sequence for "opalescent"
// use a pointer_to_function conversion
RIter = find_if( v1.begin( ), v1.end( ),
not1 ( bind2nd (ptr_fun ( strcmp ), "opalescent" ) ) );
if ( RIter != v1.end( ) )
{
cout << "Found a match: "
<< *RIter << endl;
}
}
Sortie
Original sequence contains: Open up the opalescent gates
Found a match: opalescent
Configuration requise
En-tête : <functional>
L'espace de noms : DST