Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Eine leere Basisstruktur, mit der Typen definiert werden, die möglicherweise von abgeleiteten Klassen geerbt werden, die ein binäres Funktionsobjekt bereitstellen. Veraltet in C++11, entfernt in C++17.
Syntax
struct binary_function {
typedef Arg1 first_argument_type;
typedef Arg2 second_argument_type;
typedef Result result_type;
};
Hinweise
Die Vorlagenstruktur dient als Basis für Klassen, die eine Memberfunktion der folgenden Form definieren:
result_type ** operator()(const** first_argument_type&, const second_argument_type&) const
Alle binären Funktionen dieser Art können auf ihren ersten Argumenttyp als first_argument_type, ihren zweiten Argumenttyp als second_argument_type und ihren Rückgabetyp als result_type verweisen.
Beispiel
// functional_binary_function.cpp
// compile with: /EHsc
#include <vector>
#include <functional>
#include <algorithm>
#include <iostream>
using namespace std;
template <class Type> class average:
binary_function<Type, Type, Type>
{
public:
result_type operator( ) ( first_argument_type a,
second_argument_type b )
{
return (result_type) ( ( a + b ) / 2 );
}
};
int main( )
{
vector <double> v1, v2, v3 ( 6 );
vector <double>::iterator Iter1, Iter2, Iter3;
for ( int i = 1 ; i <= 6 ; i++ )
v1.push_back( 11.0 / i );
for ( int j = 0 ; j <= 5 ; 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 averages of the elements of v1 & v2
transform ( v1.begin( ), v1.end( ), v2.begin( ), v3.begin ( ),
average<double>( ) );
cout << "The element-wise averages are: ( " ;
for ( Iter3 = v3.begin( ) ; Iter3 != v3.end( ) ; Iter3++ )
cout << *Iter3 << " ";
cout << ")" << endl;
}
The vector v1 = ( 11 5.5 3.66667 2.75 2.2 1.83333 )
The vector v2 = ( -0 -2 -4 -6 -8 -10 )
The element-wise averages are: ( 5.5 1.75 -0.166667 -1.625 -2.9 -4.08333 )