Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Fonctions d'assistance de modèle utilisées pour construire des adaptateurs d'objet de fonction pour les fonctions membres une fois initialisées à l'aide de les arguments de référence.
template<class Result, class Type>
mem_fun_ref_t<Result, Type> mem_fun_ref(
Result (Type::*_Pm )( )
);
template<class Result, class Type, class Arg>
mem_fun1_ref_t<Result, Type, Arg>
mem_fun_ref(
Result (Type::*_Pm )( Arg )
);
template<class Result, class Type>
const_mem_fun_ref_t<Result, Type>
mem_fun_ref(
Result Type::*_Pm )( ) const
);
template<class Result, class Type, class Arg>
const_mem_fun1_ref_t<Result, Type, Arg>
mem_fun_ref(
Result ( _Type::*_Pm )( Arg ) const
);
Paramètres
- _Pm
Un pointeur vers une fonction membre de la classe Type à convertir en un objet de fonction.
Valeur de retour
Un objet de fonction d' const ou d' non_const de typemem_fun_ref_t ou mem_fun1_ref_t.
Exemple
// functional_mem_fun_ref.cpp
// compile with: /EHsc
#include <vector>
#include <functional>
#include <algorithm>
#include <iostream>
using namespace std;
class NumVals
{
int val;
public:
NumVals ( ) { val = 0; }
NumVals ( int j ) { val = j; }
bool display ( ) { cout << val << " "; return true; }
bool isEven ( ) { return ( bool ) !( val %2 ); }
bool isPrime( )
{
if (val < 2) { return true; }
for (int i = 2; i <= val / i; ++i)
{
if (val % i == 0) { return false; }
}
return true;
}
};
int main( )
{
vector <NumVals> v1 ( 13 ), v2 ( 13 );
vector <NumVals>::iterator v1_Iter, v2_Iter;
int i, k;
for ( i = 0; i < 13; i++ ) v1 [ i ] = NumVals ( i+1 );
for ( k = 0; k < 13; k++ ) v2 [ k ] = NumVals ( k+1 );
cout << "The original values stored in v1 are: " ;
for_each( v1.begin( ), v1.end( ),
mem_fun_ref ( &NumVals::display ) );
cout << endl;
// Use of mem_fun_ref calling member function through a reference
// remove the primes in the vector using isPrime ( )
v1_Iter = remove_if ( v1.begin( ), v1.end( ),
mem_fun_ref ( &NumVals::isPrime ) );
cout << "With the primes removed, the remaining values in v1 are: " ;
for_each( v1.begin( ), v1_Iter,
mem_fun_ref ( &NumVals::display ) );
cout << endl;
cout << "The original values stored in v2 are: " ;
for_each( v2.begin( ), v2.end( ),
mem_fun_ref ( &NumVals::display ) );
cout << endl;
// Use of mem_fun_ref calling member function through a reference
// remove the even numbers in the vector v2 using isEven ( )
v2_Iter = remove_if ( v2.begin( ), v2.end( ),
mem_fun_ref ( &NumVals::isEven ) );
cout << "With the even numbers removed, the remaining values are: " ;
for_each( v2.begin( ), v2_Iter,
mem_fun_ref ( &NumVals::display ) );
cout << endl;
}
Configuration requise
en-tête : <functional>
l'espace de noms : DST