Exportar (0) Imprimir
Expandir todo
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original
Este tema aún no ha recibido ninguna valoración - Valorar este tema

mem_fun_ref (Función)

Funciones de la aplicación auxiliar utilizadas para construir los adaptadores del objeto function para las funciones miembro cuando se inicializa mediante argumentos de referencia.

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 
      );
_Pm

Un puntero a una función miembro de clase Type para convertirse en un objeto de función.

Un objeto de función de const o de non_const demem_fun_ref_t cualquiera de mem_fun1_ref_t.

// 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;
}
Los valores originales almacenados en v1 son: 1 2 3 4 5 6 7 8 9 10 11 12 13 con prepara quitado, los valores restantes en v1 son: 4 6 8 9 10 12 valores originales se almacenados en v2 son: 1 2 3 4 5 6 7 8 9 10 11 12 13 con los números pares quitar, los valores restantes son: 1 3 5 7 9 11 13 

encabezado: <funcional>

espacio de nombres: std

¿Te ha resultado útil?
(Caracteres restantes: 1500)
Gracias por sus comentarios

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft. Reservados todos los derechos.