ptr_fun Function

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

Siehe auch

Referenz

Standardvorlagenbibliothek