Freigeben über


bind1st-Funktion

Eine Hilfevorlagenfunktion, mit der ein Adapter erstellt wird, um ein binäres Funktionsobjekt in ein unäres Funktionsobjekt zu konvertieren, indem das erste Argument der binären Funktion an einen angegebenen Wert gebunden wird.

template<class Operation, class Type> 
   binder1st <Operation> bind1st( 
      const Operation& _Func,  
      const Type& _Left 
   );

Parameter

  • _Func
    Das einem Funktionsobjekt unären zu konvertierende binäre Funktionsobjekt.

  • _Left
    Der Wert, auf das das erste Argument des binären Funktionsobjekts gebunden werden soll.

Rückgabewert

Das unäre Funktionsobjekt, das aus dem Binden des ersten Arguments des binären Funktionsobjekts dem Wert _Left. entsteht

Hinweise

Funktionsbinder sind eine Art Funktionsadapter und, da Funktionsobjekten zurückgeben, können in bestimmten Typen der Funktionszusammensetzung verwendet werden, um die leistungsstarkeren schwierigeren und Ausdrücke zu erstellen.

Wenn _Func ein Objekt des Typs Operation und c eine Konstante ist, dann ist bind1st (_Func, c) z binder1st-Klassenkonstruktor binder1st<Operation> (_Func, c) entsprechend und ist einfacher.

Beispiel

// functional_bind1st.cpp
// compile with: /EHsc
#include <vector>
#include <functional>
#include <algorithm>
#include <iostream>

using namespace std;

// Creation of a user-defined function object
// that inherits from the unary_function base class
class greaterthan5: unary_function<int, bool>
{
public:
    result_type operator()(argument_type i)
    {
        return (result_type)(i > 5);
    }
};

int main()
{
    vector<int> v1;
    vector<int>::iterator Iter;

    int i;
    for (i = 0; i <= 5; i++)
    {
        v1.push_back(5 * i);
    }

    cout << "The vector v1 = ( " ;
    for (Iter = v1.begin(); Iter != v1.end(); Iter++)
        cout << *Iter << " ";
    cout << ")" << endl;

    // Count the number of integers > 10 in the vector
    vector<int>::iterator::difference_type result1a;
    result1a = count_if(v1.begin(), v1.end(), bind1st(less<int>(), 10));
    cout << "The number of elements in v1 greater than 10 is: "
         << result1a << "." << endl;

    // Compare: counting the number of integers > 5 in the vector
    // with a user defined function object
    vector<int>::iterator::difference_type result1b;
    result1b = count_if(v1.begin(), v1.end(), greaterthan5());
    cout << "The number of elements in v1 greater than 5 is: "
         << result1b << "." << endl;

    // Count the number of integers < 10 in the vector
    vector<int>::iterator::difference_type result2;
    result2 = count_if(v1.begin(), v1.end(), bind2nd(less<int>(), 10));
    cout << "The number of elements in v1 less than 10 is: "
         << result2 << "." << endl;
}
  

Anforderungen

Header: <functional>

Namespace: std

Siehe auch

Referenz

Standardvorlagenbibliothek