EVAP2



<FUNTIONAL>


Objetos de función son objetos diseñados específicamente para ser utilizado con una sintaxis similar a la de las funciones. En C + +, esto se logra mediante la definición de miembro de la función de operator. 

Son especialmente útiles como predicados o funciones de comparación que se utilizarán con estándar de algoritmos .

La biblioteca estándar proporciona definiciones estándar para varios objetos de función y algunas formas de modificar y adaptar su comportamiento en la cabecera <functional> : clases de base :



unary_function: Unario función del objeto de la clase base (plantilla de clase)

binary_function: Objeto de la función de la clase base binaria (plantilla de clase)

Adaptador de funciones y la conversión

Negadores

Not1: Volver negación del objeto función unaria (plantilla de función)
NOT2: Volver negación del objeto binario función (plantilla de función)

Carpetas de parámetros


bind1st: Volver objeto de función con el primer parámetro de destino (plantilla de función)
bind2nd: Volver objeto de función con el segundo parámetro de destino (plantilla de función)

Conversores


ptr_fun: Convertir puntero de función de objeto función (plantilla de función)
mem_fun: Convertir función miembro a objeto de función (versión puntero) (plantilla de función)
mem_fun_ref: Convertir función miembro a objeto de función (versión de referencia) (plantilla de función)


Ejemplos de funtional.

1. Primer ejemplo

// binary_negate example
#include <iostream>     // std::cout
#include <functional>   // std::not1
#include <algorithm>    // std::count_if

struct IsOdd {
  bool operator() (const int& x) const {return x%2==1;}
  typedef int argument_type;
};

int main () {
  int values[] = {1,2,3,4,5};
  int cx = std::count_if (valores, los valores de 5, std::not1(IsOdd()));
  std::cout << "There are " << cx << " elementos con valores pares.\n";  return 0;
}
Salida:
Hay dos elementos con valores pares

2.Segundo ejemplo

// bind1st example
#include <iostream>
#include <functional>
#include <algorithm>
using namespace std;

int main () {
  int numbers[] = {10,20,30,40,50,10};
  int cx;
  cx = count_if (números, números 6, bind1st(equal_to<int>(),10) );
  cout << "There are " << cx << " elementos que son iguales a 10.\n";  return 0;
}
Salida:
Hay dos elementos igual a 10.





No hay comentarios:

Publicar un comentario