Oharra
Orrialde honetara sartzeak baimena behar du. Saioa hasteko edo direktorioak aldatzen saia zaitezke.
Orrialde honetara sartzeak baimena behar du. Direktorioak aldatzen saia zaitezke.
Objeto de función predefinido que realiza la operación de división (operator/) sobre sus argumentos.
Sintaxis
template <class Type = void>
struct divides : public binary_function <Type, Type, Type>
{
Type operator()(const Type& Left, const Type& Right) const;
};
// specialized transparent functor for operator/
template <>
struct divides<void>
{
template <class T, class U>
auto operator()(T&& Left, U&& Right) const
-> decltype(std::forward<T>(Left)*/ std::forward<U>(Right));
};
Parámetros
Type, T, U
Tipo que admite un operator/ que toma operandos de los tipos especificados o deducidos.
Left
Operando izquierdo de la operación de división. La plantilla no especializada toma un argumento de referencia de valor L de tipo Type. La plantilla especializada realiza el reenvío directo de los argumentos de referencia de valor L y valor R del tipo deducido T.
Right
Operando derecho de la operación de división. La plantilla no especializada toma un argumento de referencia de valor L de tipo Type. La plantilla especializada realiza el reenvío directo de los argumentos de referencia de valor L y valor R del tipo deducido U.
Valor devuelto
Resultado de Left / Right. La plantilla especializada realiza el reenvío directo del resultado, que tiene el tipo devuelto por operator/.
Ejemplo
// functional_divides.cpp
// compile with: /EHsc
#include <vector>
#include <functional>
#include <algorithm>
#include <iostream>
using namespace std;
int main( )
{
vector <double> v1, v2, v3 (6);
vector <double>::iterator Iter1, Iter2, Iter3;
int i;
for ( i = 0 ; i <= 5 ; i++ )
{
v1.push_back( 7.0 * i );
}
int j;
for ( j = 1 ; j <= 6 ; j++ )
{
v2.push_back( 2.0 * j);
}
cout << "The vector v1 = ( " ;
for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
cout << *Iter1 << " ";
cout << ")" << endl;
cout << "The vector v2 = ( " ;
for ( Iter2 = v2.begin( ) ; Iter2 != v2.end( ) ; Iter2++ )
cout << *Iter2 << " ";
cout << ")" << endl;
// Finding the element-wise quotients of the elements of v1 & v2
transform ( v1.begin( ), v1.end( ), v2.begin( ), v3.begin ( ),
divides<double>( ) );
cout << "The element-wise quotients are: ( " ;
for ( Iter3 = v3.begin( ) ; Iter3 != v3.end( ) ; Iter3++ )
cout << *Iter3 << " ";
cout << ")" << endl;
}
The vector v1 = ( 0 7 14 21 28 35 )
The vector v2 = ( 2 4 6 8 10 12 )
The element-wise quotients are: ( 0 1.75 2.33333 2.625 2.8 2.91667 )