Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Funções do modelo auxiliar usadas para criar adaptadores do objeto de função para funções de membro inicializado quando usando argumentos de referência.
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
);
Parâmetros
- _Pm
Um ponteiro para a função de membro da classe Type a ser convertido em um objeto de função.
Valor de retorno
Um objeto de função de const ou de non_const de tipomem_fun_ref_t ou mem_fun1_ref_t.
Exemplo
// 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;
}
Requisitos
Cabeçalho: <functional>
namespace: STD