multiplies (STL/CLR)
La clase de plantilla describe un functor que, cuando se invoca, devuelve los primeros tiempos de argumento segundos. Se utiliza especifica un objeto de función en términos del tipo de argumento.
template<typename Arg>
ref class multiplies
{ // wrap operator()
public:
typedef Arg first_argument_type;
typedef Arg second_argument_type;
typedef Arg result_type;
typedef Microsoft::VisualC::StlClr::BinaryDelegate<
first_argument_type, second_argument_type, result_type>
delegate_type;
multiplies();
multiplies(multiplies<Arg>% right);
result_type operator()(first_argument_type left,
second_argument_type right);
operator delegate_type^();
};
Parámetros
- Argumento
El tipo de los argumentos y el valor devuelto.
Funciones miembro
Definición de tipo |
Descripción |
---|---|
delegate_type |
El tipo de delegado genérico. |
first_argument_type |
El tipo del primer argumento de functor. |
result_type |
El tipo de resultado de functor. |
second_argument_type |
El tipo de argumento de functor segundo. |
Miembro |
Descripción |
---|---|
multiplies |
Construye el functor. |
operador ?? |
Descripción |
---|---|
operator() |
Calcula la función deseada. |
delegate_type^ de operador |
Convierte el functor un delegado. |
Comentarios
La clase de plantilla describe un functor de dos- argumento. Define el operador operator() de miembro para que, cuando el objeto se denomina como función, devuelve los primeros tiempos de argumento segundos.
También puede pasar el objeto como argumento de la función cuyo tipo es delegate_type^ y se convierte correctamente.
Ejemplo
// cliext_multiplies.cpp
// compile with: /clr
#include <cliext/algorithm>
#include <cliext/functional>
#include <cliext/vector>
typedef cliext::vector<int> Myvector;
int main()
{
Myvector c1;
c1.push_back(4);
c1.push_back(3);
Myvector c2;
c2.push_back(2);
c2.push_back(1);
Myvector c3(2, 0);
// display initial contents " 4 3" and " 2 1"
for each (int elem in c1)
System::Console::Write(" {0}", elem);
System::Console::WriteLine();
for each (int elem in c2)
System::Console::Write(" {0}", elem);
System::Console::WriteLine();
// transform and display
cliext::transform(c1.begin(), c1.begin() + 2,
c2.begin(), c3.begin(), cliext::multiplies<int>());
for each (int elem in c3)
System::Console::Write(" {0}", elem);
System::Console::WriteLine();
return (0);
}
Requisitos
cliext <deEncabezado: /funcional>
cliext deEspacio de nombres: