<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