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.
Hilfevorlagenfunktionen verwendet, um die unären und binären Funktionszeiger bzw. in die unären und binären anwendbaren Funktionen zu konvertieren.
template<class Arg, class Result>
pointer_to_unary_function<Arg, Result, Result (*)(Arg)>
ptr_fun(Result (*_pfunc)(Arg));
template<class Arg1, class Arg2, class Result>
pointer_to_binary_function<Arg1, Arg2, Result, Result (*)(Arg1, Arg2)>
ptr_fun(Result (*_pfunc)(Arg1, Arg2));
Parameter
- _pfunc
Der unäre oder binäre zu einer anwendbaren Funktion konvertiert werden, Funktionszeiger.
Rückgabewert
Die erste Vorlagenfunktion gibt die Funktion pointer_to_unary_function unäre <Arg, Ergebnis> zurück (*_pfunc).
Die binäre Funktion pointer_to_binary_function <Arg1, Arg2, Ergebnis> der zweiten Vorlagenfunktions-Rückgaben (*_pfunc).
Hinweise
Ein Funktionszeiger ist ein Funktionsobjekt und zu jedem Standardvorlagenbibliotheksalgorithmus übergeben, der eine Funktion als Parameter erwartet, ist nicht anwendbar.Um ihn mit einem Adapter, wie Binden eines Werts darauf oder Anwendung mit dem Negator zu verwenden, muss er mit geschachtelten Typen angegeben werden die eine solche Anpassung aktivieren.Die Konvertierung von unären und binären Funktionszeigern durch die ptr_fun Hilfsfunktion ermöglicht die Funktionsadapter mit den unären und binären Funktionszeigern.
Beispiel
// functional_ptr_fun.cpp
// compile with: /EHsc
#include <vector>
#include <algorithm>
#include <functional>
#include <cstring>
#include <iostream>
int main( )
{
using namespace std;
vector <char*> v1;
vector <char*>::iterator Iter1, RIter;
v1.push_back ( "Open" );
v1.push_back ( "up" );
v1.push_back ( "the" );
v1.push_back ( "opalescent" );
v1.push_back ( "gates" );
cout << "Original sequence contains: " ;
for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; ++Iter1 )
cout << *Iter1 << " ";
cout << endl;
// To search the sequence for "opalescent"
// use a pointer_to_function conversion
RIter = find_if( v1.begin( ), v1.end( ),
not1 ( bind2nd (ptr_fun ( strcmp ), "opalescent" ) ) );
if ( RIter != v1.end( ) )
{
cout << "Found a match: "
<< *RIter << endl;
}
}
Ausgabe
Original sequence contains: Open up the opalescent gates
Found a match: opalescent
Anforderungen
Header: <functional>
Namespace: std