Freigeben über


bind1st Function

Eine Hilfevorlagenfunktion, die einen Adaptern, die ein binäres Funktionsobjekt in ein unäres Funktionsobjekt zu konvertieren, indem es das erste Argument der binären Funktion mit einem angegebenen Wert gebunden wird.

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

Parameter

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

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

Rückgabewert

Das unäre Funktionsobjekt, das vom Binden des ersten Arguments des binären Funktionsobjekts auf den Wert _Left. entsteht

Hinweise

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

Wenn _Func ein Objekt des Typs Operation ist und c eine Konstante ist, ist bind1st (_Func, c) in binder1st-Klassenkonstruktor binder1st<Operation> (_Func, c) nach 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