Freigeben über


functional (STL/CLR)

Fügen Sie den STL/CLR-Header <cliext/functional> ein, um funktionale Klassenvorlagen und zugehörige Vorlagendelegatten und -funktionen zu definieren.

Syntax

#include <functional>

Anforderungen

Header:<cliext/functional>

Namespace:cliext

Deklarationen

Delegieren Beschreibung
binary_delegate (STL/CLR) Stellvertretung mit zwei Argumenten.
binary_delegate_noreturn (STL/CLR) Stellvertretung mit zwei Argumenten, die zurückgegeben wird void.
unary_delegate (STL/CLR) Stellvertretung mit einem Argument.
unary_delegate_noreturn (STL/CLR) Stellvertretung mit einem Argument, die zurückgegeben wird void.
Klasse Beschreibung
binary_negate (STL/CLR) Functor zum Negieren eines Zwei-Argument-Functors.
binder1st (STL/CLR) Functor zum Binden des ersten Arguments an einen Zwei-Argument-Functor.
binder2nd (STL/CLR) Functor zum Binden des zweiten Arguments an einen Zwei-Argument-Functor.
divides (STL/CLR) Teilen Sie den Functor.
equal_to (STL/CLR) Gleicher Vergleichs-Functor.
greater (STL/CLR) Größerer Vergleichs-Functor.
greater_equal (STL/CLR) Größer oder gleicher Vergleichs-Functor.
less (STL/CLR) Weniger Vergleichs-Functor.
less_equal (STL/CLR) Kleiner oder gleicher Vergleichs-Functor.
logical_and (STL/CLR) Logische UND Functor.
logical_not (STL/CLR) LogischeR NOT-Functor.
logical_or (STL/CLR) LogischeR ODER-Functor.
minus (STL/CLR) Subtrahieren Sie den Functor.
modulus (STL/CLR) Modulus Functor.
multiplies (STL/CLR) Multiplizieren sie.
negate (STL/CLR) Functor, um sein Argument negiert zurückzugeben.
not_equal_to (STL/CLR) Kein gleicher Vergleichs-Functor.
plus (STL/CLR) Fügen Sie einen Functor hinzu.
unary_negate (STL/CLR) Functor zum Negieren eines Ein-Argument-Functors.
Funktion Beschreibung
bind1st (STL/CLR) Generiert einen Binder1st für ein Argument und einen Functor.
bind2nd (STL/CLR) Generiert einen Binder2nd für ein Argument und einen Functor.
not1 (STL/CLR) Generiert eine unary_negate für einen Functor.
not2 (STL/CLR) Generiert eine binary_negate für einen Functor.

Member

binary_delegate (STL/CLR)

Die generische Klasse beschreibt einen Zwei-Argument-Delegaten. Sie verwenden ihn, um einen Delegat in Bezug auf das Argument und die Rückgabetypen anzugeben.

Syntax

generic<typename Arg1,
    typename Arg2,
    typename Result>
    delegate Result binary_delegate(Arg1, Arg2);

Parameter

Arg1
Der Typ des ersten Arguments.

Arg2
Der Typ des zweiten Arguments.

Result
Der Rückgabetyp.

Hinweise

Der generische Delegat beschreibt eine Zwei-Argument-Funktion.

In diesen Funktionsvorlagen:

binary_delegate<int, int, int> Fun1;

binary_delegate<int, int, int> Fun2;

die Typen Fun1 und Fun2 Synonyme sind, während für:

delegate int Fun1(int, int);

delegate int Fun2(int, int);

sie sind nicht derselbe Typ.

Beispiel

// cliext_binary_delegate.cpp
// compile with: /clr
#include <cliext/functional>

bool key_compare(wchar_t left, wchar_t right)
    {
    return (left < right);
    }

typedef cliext::binary_delegate<wchar_t, wchar_t, bool> Mydelegate;
int main()
    {
    Mydelegate^ kcomp = gcnew Mydelegate(&key_compare);

    System::Console::WriteLine("compare(L'a', L'a') = {0}",
        kcomp(L'a', L'a'));
    System::Console::WriteLine("compare(L'a', L'b') = {0}",
        kcomp(L'a', L'b'));
    System::Console::WriteLine("compare(L'b', L'a') = {0}",
        kcomp(L'b', L'a'));
    System::Console::WriteLine();
    return (0);
    }
compare(L'a', L'a') = False
compare(L'a', L'b') = True
compare(L'b', L'a') = False

binary_delegate_noreturn (STL/CLR)

Die generische Klasse beschreibt einen Zwei-Argument-Delegaten, der zurückgegeben wird void. Sie verwenden ihn, um einen Delegat in Bezug auf das Argument anzugeben.

Syntax

generic<typename Arg1,
    typename Arg2>
    delegate void binary_delegate(Arg1, Arg2);

Parameter

Arg1
Der Typ des ersten Arguments.

Arg2
Der Typ des zweiten Arguments.

Hinweise

Der generische Delegat beschreibt eine Zwei-Argument-Funktion, die zurückgegeben wird void.

In diesen Funktionsvorlagen:

binary_delegate_noreturn<int, int> Fun1;

binary_delegate_noreturn<int, int> Fun2;

die Typen Fun1 und Fun2 Synonyme sind, während für:

delegate void Fun1(int, int);

delegate void Fun2(int, int);

sie sind nicht derselbe Typ.

Beispiel

// cliext_binary_delegate_noreturn.cpp
// compile with: /clr
#include <cliext/functional>

void key_compare(wchar_t left, wchar_t right)
    {
    System::Console::WriteLine("compare({0}, {1}) = {2}",
        left, right, left < right);
    }

typedef cliext::binary_delegate_noreturn<wchar_t, wchar_t> Mydelegate;
int main()
    {
    Mydelegate^ kcomp = gcnew Mydelegate(&key_compare);

    kcomp(L'a', L'a');
    kcomp(L'a', L'b');
    kcomp(L'b', L'a');
    System::Console::WriteLine();
    return (0);
    }
compare(a, a) = False
compare(a, b) = True
compare(b, a) = False

binary_negate (STL/CLR)

Die Vorlagenklasse beschreibt einen Functor, der, wenn sie aufgerufen wird, die logische NOT des gespeicherten Zwei-Argument-Functors zurückgibt. Sie verwenden es, um ein Funktionsobjekt in Bezug auf den gespeicherten Functor anzugeben.

Syntax

template<typename Fun>
    ref class binary_negate
    { // wrap operator()
public:
    typedef Fun stored_function_type;
    typedef typename Fun::first_argument_type first_argument_type;
    typedef typename Fun::second_argument_type second_argument_type;
    typedef bool result_type;
    typedef Microsoft::VisualC::StlClr::BinaryDelegate<
        first_argument_type, second_argument_type, result_type>
        delegate_type;

    explicit binary_negate(Fun% functor);
    binary_negate(binary_negate<Arg>% right);

    result_type operator()(first_argument_type left,
        second_argument_type right);
    operator delegate_type^();
    };

Parameter

Fun
Der Typ des gespeicherten Functors.

Elementfunktionen

Typendefinition Beschreibung
delegate_type Der Typ des generischen Delegaten.
first_argument_type Der Typ des ersten Arguments des Functors.
result_type Der Typ des Functorergebnisses.
second_argument_type Der Typ des zweiten Arguments des Functors.
stored_function_type Der Typ des Functors.
Member Beschreibung
binary_negate Erstellt den Functor.
Operator Beschreibung
operator() Berechnet die gewünschte Funktion.
operator delegate_type^() Wandelt den Functor in eine Stellvertretung um.

Hinweise

Die Vorlagenklasse beschreibt einen Zwei-Argument-Functor, der einen weiteren Zwei-Argument-Functor speichert. Er definiert den Memberoperator operator() , sodass, wenn das Objekt als Funktion aufgerufen wird, die logische NOT des gespeicherten Functors zurückgibt, der mit den beiden Argumenten aufgerufen wird.

Sie können das Objekt auch als Funktionsargument übergeben, dessen Typ und delegate_type^ er entsprechend konvertiert wird.

Beispiel

// cliext_binary_negate.cpp
// compile with: /clr
#include <cliext/algorithm>
#include <cliext/functional>
#include <cliext/vector>

typedef cliext::vector<int> Myvector;
int main()
    {
    Myvector c1;
    c1.push_back(4);
    c1.push_back(3);
    Myvector c2;
    c2.push_back(4);
    c2.push_back(4);
    Myvector c3(2, 0);

// display initial contents " 4 3" and " 4 4"
    for each (int elem in c1)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();

    for each (int elem in c2)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();

// transform and display
    cliext::less<int> less_op;

    cliext::transform(c1.begin(), c1.begin() + 2,
        c2.begin(), c3.begin(),
        cliext::binary_negate<cliext::less<int> >(less_op));
    for each (int elem in c3)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();

// transform and display with function
    cliext::transform(c1.begin(), c1.begin() + 2,
        c2.begin(), c3.begin(), cliext::not2(less_op));
    for each (int elem in c3)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();
    return (0);
    }
4 3
4 4
1 0
1 0

bind1st (STL/CLR)

Generiert ein Argument und einen binder1st Functor.

Syntax

template<typename Fun,
    typename Arg>
    binder1st<Fun> bind1st(Fun% functor,
        Arg left);

Vorlagenparameter

Arg
Der Typ des Arguments.

Fun
Der Typ des Functors.

Funktionsparameter

functor
Der Functor, der umbrochen werden soll.

left
Das erste Argument, das umbrochen werden soll.

Hinweise

Die Funktionsvorlage gibt zurück binder1st<Fun>(functor, left). Sie verwenden es als bequeme Möglichkeit, einen Zwei-Argument-Functor und sein erstes Argument in einem Ein-Argument-Functor umzuschließen, der ihn mit einem zweiten Argument aufruft.

Beispiel

// cliext_bind1st.cpp
// compile with: /clr
#include <cliext/algorithm>
#include <cliext/functional>
#include <cliext/vector>

typedef cliext::vector<int> Myvector;
int main()
    {
    Myvector c1;
    c1.push_back(4);
    c1.push_back(3);
    Myvector c3(2, 0);

// display initial contents " 4 3"
    for each (int elem in c1)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();

// transform and display
    cliext::minus<int> sub_op;
    cliext::binder1st<cliext::minus<int> > subfrom3(sub_op, 3);

    cliext::transform(c1.begin(), c1.begin() + 2, c3.begin(),
        subfrom3);
    for each (int elem in c3)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();

// transform and display with function
    cliext::transform(c1.begin(), c1.begin() + 2, c3.begin(),
        bind1st(sub_op, 3));
    for each (int elem in c3)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();
    return (0);
    }
4 3
-1 0
-1 0

bind2nd (STL/CLR)

Generiert ein Argument und einen binder2nd Functor.

Syntax

template<typename Fun,
    typename Arg>
    binder2nd<Fun> bind2nd(Fun% functor,
        Arg right);

Vorlagenparameter

Arg
Der Typ des Arguments.

Fun
Der Typ des Functors.

Funktionsparameter

functor
Der Functor, der umbrochen werden soll.

right
Das zweite Argument, das umbrochen werden soll.

Hinweise

Die Funktionsvorlage gibt zurück binder2nd<Fun>(functor, right). Sie verwenden es als bequeme Möglichkeit, einen Zwei-Argument-Functor und das zweite Argument in einem Ein-Argument-Functor umzuschließen, der ihn mit einem ersten Argument aufruft.

Beispiel

// cliext_bind2nd.cpp
// compile with: /clr
#include <cliext/algorithm>
#include <cliext/functional>
#include <cliext/vector>

typedef cliext::vector<int> Myvector;
int main()
    {
    Myvector c1;
    c1.push_back(4);
    c1.push_back(3);
    Myvector c3(2, 0);

// display initial contents " 4 3"
    for each (int elem in c1)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();

// transform and display
    cliext::minus<int> sub_op;
    cliext::binder2nd<cliext::minus<int> > sub4(sub_op, 4);

    cliext::transform(c1.begin(), c1.begin() + 2, c3.begin(),
        sub4);
    for each (int elem in c3)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();

// transform and display with function
    cliext::transform(c1.begin(), c1.begin() + 2, c3.begin(),
        bind2nd(sub_op, 4));
    for each (int elem in c3)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();
    return (0);
    }
4 3
0 -1
0 -1

binder1st (STL/CLR)

Die Vorlagenklasse beschreibt einen Ein-Argument-Functor, der, wenn aufgerufen wird, seinen gespeicherten Zwei-Argument-Functor zurückgibt, der mit dem gespeicherten ersten Argument und dem angegebenen zweiten Argument aufgerufen wird. Sie verwenden es, um ein Funktionsobjekt in Bezug auf den gespeicherten Functor anzugeben.

Syntax

template<typename Fun>
    ref class binder1st
    { // wrap operator()
public:
    typedef Fun stored_function_type;
    typedef typename Fun::first_argument_type first_argument_type;
    typedef typename Fun::second_argument_type second_argument_type;
    typedef typename Fun:result_type result_type;
    typedef Microsoft::VisualC::StlClr::UnaryDelegate<
        second_argument_type, result_type>
        delegate_type;

    binder1st(Fun% functor, first_argument_type left);
    binder1st(binder1st<Arg>% right);

    result_type operator()(second_argument_type right);
    operator delegate_type^();
    };

Parameter

Fun
Der Typ des gespeicherten Functors.

Elementfunktionen

Typendefinition Beschreibung
delegate_type Der Typ des generischen Delegaten.
first_argument_type Der Typ des ersten Arguments des Functors.
result_type Der Typ des Functorergebnisses.
second_argument_type Der Typ des zweiten Arguments des Functors.
stored_function_type Der Typ des Functors.
Member Beschreibung
binder1st Erstellt den Functor.
Operator Beschreibung
operator() Berechnet die gewünschte Funktion.
operator delegate_type^() Wandelt den Functor in eine Stellvertretung um.

Hinweise

Die Vorlagenklasse beschreibt einen Ein-Argument-Functor, der einen Zwei-Argument-Functor und ein erstes Argument speichert. Er definiert den Memberoperator operator() , sodass, wenn das Objekt als Funktion aufgerufen wird, das Ergebnis des Aufrufs des gespeicherten Functors mit dem gespeicherten ersten Argument und dem angegebenen zweiten Argument zurückgibt.

Sie können das Objekt auch als Funktionsargument übergeben, dessen Typ und delegate_type^ er entsprechend konvertiert wird.

Beispiel

// cliext_binder1st.cpp
// compile with: /clr
#include <cliext/algorithm>
#include <cliext/functional>
#include <cliext/vector>

typedef cliext::vector<int> Myvector;
int main()
    {
    Myvector c1;
    c1.push_back(4);
    c1.push_back(3);
    Myvector c3(2, 0);

// display initial contents " 4 3"
    for each (int elem in c1)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();

// transform and display
    cliext::minus<int> sub_op;
    cliext::binder1st<cliext::minus<int> > subfrom3(sub_op, 3);

    cliext::transform(c1.begin(), c1.begin() + 2, c3.begin(),
        subfrom3);
    for each (int elem in c3)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();

// transform and display with function
    cliext::transform(c1.begin(), c1.begin() + 2, c3.begin(),
        bind1st(sub_op, 3));
    for each (int elem in c3)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();
    return (0);
    }
4 3
-1 0
-1 0

binder2nd (STL/CLR)

Die Vorlagenklasse beschreibt einen Ein-Argument-Functor, der, wenn sie aufgerufen wird, den gespeicherten Zwei-Argument-Functor zurückgibt, der mit dem angegebenen ersten Argument und dem gespeicherten zweiten Argument aufgerufen wird. Sie verwenden es, um ein Funktionsobjekt in Bezug auf den gespeicherten Functor anzugeben.

Syntax

template<typename Fun>
    ref class binder2nd
    { // wrap operator()
public:
    typedef Fun stored_function_type;
    typedef typename Fun::first_argument_type first_argument_type;
    typedef typename Fun::second_argument_type second_argument_type;
    typedef typename Fun:result_type result_type;
    typedef Microsoft::VisualC::StlClr::UnaryDelegate<
        first_argument_type, result_type>
        delegate_type;

    binder2nd(Fun% functor, second_argument_type left);
    binder2nd(binder2nd<Arg>% right);

    result_type operator()(first_argument_type right);
    operator delegate_type^();
    };

Parameter

Fun
Der Typ des gespeicherten Functors.

Elementfunktionen

Typendefinition Beschreibung
delegate_type Der Typ des generischen Delegaten.
first_argument_type Der Typ des ersten Arguments des Functors.
result_type Der Typ des Functorergebnisses.
second_argument_type Der Typ des zweiten Arguments des Functors.
stored_function_type Der Typ des Functors.
Member Beschreibung
binder2nd Erstellt den Functor.
Operator Beschreibung
operator() Berechnet die gewünschte Funktion.
operator delegate_type^() Wandelt den Functor in eine Stellvertretung um.

Hinweise

Die Vorlagenklasse beschreibt einen Ein-Argument-Functor, der einen Zwei-Argument-Functor und ein zweites Argument speichert. Er definiert den Memberoperator operator() so, dass beim Aufrufen des Objekts als Funktion das Ergebnis des Aufrufs des gespeicherten Functors mit dem angegebenen ersten Argument und dem gespeicherten zweiten Argument zurückgegeben wird.

Sie können das Objekt auch als Funktionsargument übergeben, dessen Typ und delegate_type^ er entsprechend konvertiert wird.

Beispiel

// cliext_binder2nd.cpp
// compile with: /clr
#include <cliext/algorithm>
#include <cliext/functional>
#include <cliext/vector>

typedef cliext::vector<int> Myvector;
int main()
    {
    Myvector c1;
    c1.push_back(4);
    c1.push_back(3);
    Myvector c3(2, 0);

// display initial contents " 4 3"
    for each (int elem in c1)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();

// transform and display
    cliext::minus<int> sub_op;
    cliext::binder2nd<cliext::minus<int> > sub4(sub_op, 4);

    cliext::transform(c1.begin(), c1.begin() + 2, c3.begin(),
        sub4);
    for each (int elem in c3)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();

// transform and display with function
    cliext::transform(c1.begin(), c1.begin() + 2, c3.begin(),
        bind2nd(sub_op, 4));
    for each (int elem in c3)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();
    return (0);
    }
4 3
0 -1
0 -1

divides (STL/CLR)

Die Vorlagenklasse beschreibt einen Functor, der, wenn sie aufgerufen wird, das erste Argument dividiert durch die zweite zurückgibt. Sie verwenden es, um ein Funktionsobjekt in Bezug auf den Argumenttyp anzugeben.

Syntax

template<typename Arg>
    ref class divides
    { // wrap operator()
public:
    typedef Arg first_argument_type;
    typedef Arg second_argument_type;
    typedef Arg result_type;
    typedef Microsoft::VisualC::StlClr::BinaryDelegate<
        first_argument_type, second_argument_type, result_type>
        delegate_type;

    divides();
    divides(divides<Arg>% right);

    result_type operator()(first_argument_type left,
        second_argument_type right);
    operator delegate_type^();
    };

Parameter

Arg
Der Typ der Argumente und des Rückgabewerts.

Elementfunktionen

Typendefinition Beschreibung
delegate_type Der Typ des generischen Delegaten.
first_argument_type Der Typ des ersten Arguments des Functors.
result_type Der Typ des Functorergebnisses.
second_argument_type Der Typ des zweiten Arguments des Functors.
Member Beschreibung
divides Erstellt den Functor.
Operator Beschreibung
operator() Berechnet die gewünschte Funktion.
operator delegate_type^() Wandelt den Functor in eine Stellvertretung um.

Hinweise

Die Vorlagenklasse beschreibt einen Zwei-Argument-Functor. Er definiert den Memberoperator operator() so, dass, wenn das Objekt als Funktion aufgerufen wird, das erste Argument dividiert durch die zweite zurückgibt.

Sie können das Objekt auch als Funktionsargument übergeben, dessen Typ und delegate_type^ er entsprechend konvertiert wird.

Beispiel

// cliext_divides.cpp
// compile with: /clr
#include <cliext/algorithm>
#include <cliext/functional>
#include <cliext/vector>

typedef cliext::vector<int> Myvector;
int main()
    {
    Myvector c1;
    c1.push_back(4);
    c1.push_back(3);
    Myvector c2;
    c2.push_back(2);
    c2.push_back(1);
    Myvector c3(2, 0);

// display initial contents " 4 3" and " 2 1"
    for each (int elem in c1)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();

    for each (int elem in c2)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();

// transform and display
    cliext::transform(c1.begin(), c1.begin() + 2,
        c2.begin(), c3.begin(), cliext::divides<int>());
    for each (int elem in c3)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();
    return (0);
    }
4 3
2 1
2 3

equal_to (STL/CLR)

Die Vorlagenklasse beschreibt einen Functor, der, wenn sie aufgerufen wird, nur true zurückgibt, wenn das erste Argument gleich der zweiten ist. Sie verwenden es, um ein Funktionsobjekt in Bezug auf den Argumenttyp anzugeben.

Syntax

template<typename Arg>
    ref class equal_to
    { // wrap operator()
public:
    typedef Arg first_argument_type;
    typedef Arg second_argument_type;
    typedef bool result_type;
    typedef Microsoft::VisualC::StlClr::BinaryDelegate<
        first_argument_type, second_argument_type, result_type>
        delegate_type;

    equal_to();
    equal_to(equal_to<Arg>% right);

    result_type operator()(first_argument_type left,
        second_argument_type right);
    operator delegate_type^();
    };

Parameter

Arg
Der Typ der Argumente.

Elementfunktionen

Typendefinition Beschreibung
delegate_type Der Typ des generischen Delegaten.
first_argument_type Der Typ des ersten Arguments des Functors.
result_type Der Typ des Functorergebnisses.
second_argument_type Der Typ des zweiten Arguments des Functors.
Member Beschreibung
equal_to Erstellt den Functor.
Operator Beschreibung
operator() Berechnet die gewünschte Funktion.
operator delegate_type^() Wandelt den Functor in eine Stellvertretung um.

Hinweise

Die Vorlagenklasse beschreibt einen Zwei-Argument-Functor. Er definiert den Memberoperator operator() , sodass das erste Argument nur dann wahr ist, wenn das Objekt als Funktion aufgerufen wird.

Sie können das Objekt auch als Funktionsargument übergeben, dessen Typ und delegate_type^ er entsprechend konvertiert wird.

Beispiel

// cliext_equal_to.cpp
// compile with: /clr
#include <cliext/algorithm>
#include <cliext/functional>
#include <cliext/vector>

typedef cliext::vector<int> Myvector;
int main()
    {
    Myvector c1;
    c1.push_back(4);
    c1.push_back(3);
    Myvector c2;
    c2.push_back(4);
    c2.push_back(4);
    Myvector c3(2, 0);

// display initial contents " 4 3" and " 4 4"
    for each (int elem in c1)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();

    for each (int elem in c2)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();

// transform and display
    cliext::transform(c1.begin(), c1.begin() + 2,
        c2.begin(), c3.begin(), cliext::equal_to<int>());
    for each (int elem in c3)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();
    return (0);
    }
4 3
4 4
1 0

greater (STL/CLR)

Die Vorlagenklasse beschreibt einen Functor, der bei Aufruf nur "true" zurückgibt, wenn das erste Argument größer als die zweite ist. Sie verwenden es, um ein Funktionsobjekt in Bezug auf den Argumenttyp anzugeben.

Syntax

template<typename Arg>
    ref class greater
    { // wrap operator()
public:
    typedef Arg first_argument_type;
    typedef Arg second_argument_type;
    typedef bool result_type;
    typedef Microsoft::VisualC::StlClr::BinaryDelegate<
        first_argument_type, second_argument_type, result_type>
        delegate_type;

    greater();
    greater(greater<Arg>% right);

    result_type operator()(first_argument_type left,
        second_argument_type right);
    operator delegate_type^();
    };

Parameter

Arg
Der Typ der Argumente.

Elementfunktionen

Typendefinition Beschreibung
delegate_type Der Typ des generischen Delegaten.
first_argument_type Der Typ des ersten Arguments des Functors.
result_type Der Typ des Functorergebnisses.
second_argument_type Der Typ des zweiten Arguments des Functors.
Member Beschreibung
greater Erstellt den Functor.
Operator Beschreibung
operator() Berechnet die gewünschte Funktion.
operator delegate_type^ Wandelt den Functor in eine Stellvertretung um.

Hinweise

Die Vorlagenklasse beschreibt einen Zwei-Argument-Functor. Er definiert den Memberoperator operator() , sodass das erste Argument nur dann true zurückgibt, wenn das erste Argument größer als die zweite ist, wenn das Objekt als Funktion aufgerufen wird.

Sie können das Objekt auch als Funktionsargument übergeben, dessen Typ und delegate_type^ er entsprechend konvertiert wird.

Beispiel

// cliext_greater.cpp
// compile with: /clr
#include <cliext/algorithm>
#include <cliext/functional>
#include <cliext/vector>

typedef cliext::vector<int> Myvector;
int main()
    {
    Myvector c1;
    c1.push_back(4);
    c1.push_back(3);
    Myvector c2;
    c2.push_back(3);
    c2.push_back(3);
    Myvector c3(2, 0);

// display initial contents " 4 3" and " 3 3"
    for each (int elem in c1)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();

    for each (int elem in c2)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();

// transform and display
    cliext::transform(c1.begin(), c1.begin() + 2,
        c2.begin(), c3.begin(), cliext::greater<int>());
    for each (int elem in c3)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();
    return (0);
    }
4 3
3 3
1 0

greater_equal (STL/CLR)

Die Vorlagenklasse beschreibt einen Functor, der bei Aufruf nur "true" zurückgibt, wenn das erste Argument größer oder gleich dem zweiten ist. Sie verwenden es, um ein Funktionsobjekt in Bezug auf den Argumenttyp anzugeben.

Syntax

template<typename Arg>
    ref class greater_equal
    { // wrap operator()
public:
    typedef Arg first_argument_type;
    typedef Arg second_argument_type;
    typedef bool result_type;
    typedef Microsoft::VisualC::StlClr::BinaryDelegate<
        first_argument_type, second_argument_type, result_type>
        delegate_type;

    greater_equal();
    greater_equal(greater_equal<Arg>% right);

    result_type operator()(first_argument_type left,
        second_argument_type right);
    operator delegate_type^();
    };

Parameter

Arg
Der Typ der Argumente.

Elementfunktionen

Typendefinition Beschreibung
delegate_type Der Typ des generischen Delegaten.
first_argument_type Der Typ des ersten Arguments des Functors.
result_type Der Typ des Functorergebnisses.
second_argument_type Der Typ des zweiten Arguments des Functors.
Member Beschreibung
greater_equal Erstellt den Functor.
Operator Beschreibung
operator() Berechnet die gewünschte Funktion.
operator delegate_type^ Wandelt den Functor in eine Stellvertretung um.

Hinweise

Die Vorlagenklasse beschreibt einen Zwei-Argument-Functor. Er definiert den Memberoperator operator() , sodass das Erste Argument größer oder gleich der zweiten ist, wenn das Objekt als Funktion aufgerufen wird, "true" zurück.

Sie können das Objekt auch als Funktionsargument übergeben, dessen Typ und delegate_type^ er entsprechend konvertiert wird.

Beispiel

// cliext_greater_equal.cpp
// compile with: /clr
#include <cliext/algorithm>
#include <cliext/functional>
#include <cliext/vector>

typedef cliext::vector<int> Myvector;
int main()
    {
    Myvector c1;
    c1.push_back(4);
    c1.push_back(3);
    Myvector c2;
    c2.push_back(4);
    c2.push_back(4);
    Myvector c3(2, 0);

// display initial contents " 4 3" and " 4 4"
    for each (int elem in c1)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();

    for each (int elem in c2)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();

// transform and display
    cliext::transform(c1.begin(), c1.begin() + 2,
        c2.begin(), c3.begin(), cliext::greater_equal<int>());
    for each (int elem in c3)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();
    return (0);
    }
4 3
4 4
1 0

less (STL/CLR)

Die Vorlagenklasse beschreibt einen Functor, der bei Aufruf nur "true" zurückgibt, wenn das erste Argument kleiner als der zweite ist. Sie verwenden es, um ein Funktionsobjekt in Bezug auf den Argumenttyp anzugeben.

Syntax

template<typename Arg>
    ref class less
    { // wrap operator()
public:
    typedef Arg first_argument_type;
    typedef Arg second_argument_type;
    typedef bool result_type;
    typedef Microsoft::VisualC::StlClr::BinaryDelegate<
        first_argument_type, second_argument_type, result_type>
        delegate_type;

    less();
    less(less<Arg>% right);

    result_type operator()(first_argument_type left,
        second_argument_type right);
    operator delegate_type^();
    };

Parameter

Arg
Der Typ der Argumente.

Elementfunktionen

Typendefinition Beschreibung
delegate_type Der Typ des generischen Delegaten.
first_argument_type Der Typ des ersten Arguments des Functors.
result_type Der Typ des Functorergebnisses.
second_argument_type Der Typ des zweiten Arguments des Functors.
Member Beschreibung
less Erstellt den Functor.
Operator Beschreibung
operator() Berechnet die gewünschte Funktion.
operator delegate_type^ Wandelt den Functor in eine Stellvertretung um.

Hinweise

Die Vorlagenklasse beschreibt einen Zwei-Argument-Functor. Er definiert den Memberoperator operator() , sodass das erste Argument nur dann wahr ist, wenn das Objekt als Funktion aufgerufen wird.

Sie können das Objekt auch als Funktionsargument übergeben, dessen Typ und delegate_type^ er entsprechend konvertiert wird.

Beispiel

// cliext_less.cpp
// compile with: /clr
#include <cliext/algorithm>
#include <cliext/functional>
#include <cliext/vector>

typedef cliext::vector<int> Myvector;
int main()
    {
    Myvector c1;
    c1.push_back(4);
    c1.push_back(3);
    Myvector c2;
    c2.push_back(4);
    c2.push_back(4);
    Myvector c3(2, 0);

// display initial contents " 4 3" and " 4 4"
    for each (int elem in c1)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();

    for each (int elem in c2)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();

// transform and display
    cliext::transform(c1.begin(), c1.begin() + 2,
        c2.begin(), c3.begin(), cliext::less<int>());
    for each (int elem in c3)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();
    return (0);
    }
4 3
4 4
0 1

less_equal (STL/CLR)

Die Vorlagenklasse beschreibt einen Functor, der bei Aufruf nur "true" zurückgibt, wenn das erste Argument kleiner oder gleich dem zweiten ist. Sie verwenden es, um ein Funktionsobjekt in Bezug auf den Argumenttyp anzugeben.

Syntax

template<typename Arg>
    ref class less_equal
    { // wrap operator()
public:
    typedef Arg first_argument_type;
    typedef Arg second_argument_type;
    typedef bool result_type;
    typedef Microsoft::VisualC::StlClr::BinaryDelegate<
        first_argument_type, second_argument_type, result_type>
        delegate_type;

    less_equal();
    less_equal(less_equal<Arg>% right);

    result_type operator()(first_argument_type left,
        second_argument_type right);
    operator delegate_type^();
    };

Parameter

Arg
Der Typ der Argumente.

Elementfunktionen

Typendefinition Beschreibung
delegate_type Der Typ des generischen Delegaten.
first_argument_type Der Typ des ersten Arguments des Functors.
result_type Der Typ des Functorergebnisses.
second_argument_type Der Typ des zweiten Arguments des Functors.
Member Beschreibung
less_equal Erstellt den Functor.
Operator Beschreibung
operator() Berechnet die gewünschte Funktion.
operator delegate_type^ Wandelt den Functor in eine Stellvertretung um.

Hinweise

Die Vorlagenklasse beschreibt einen Zwei-Argument-Functor. Er definiert den Memberoperator operator() , sodass, wenn das Objekt als Funktion aufgerufen wird, nur true zurückgibt, wenn das erste Argument kleiner oder gleich dem zweiten ist.

Sie können das Objekt auch als Funktionsargument übergeben, dessen Typ und delegate_type^ er entsprechend konvertiert wird.

Beispiel

// cliext_less_equal.cpp
// compile with: /clr
#include <cliext/algorithm>
#include <cliext/functional>
#include <cliext/vector>

typedef cliext::vector<int> Myvector;
int main()
    {
    Myvector c1;
    c1.push_back(4);
    c1.push_back(3);
    Myvector c2;
    c2.push_back(3);
    c2.push_back(3);
    Myvector c3(2, 0);

// display initial contents " 4 3" and " 3 3"
    for each (int elem in c1)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();

    for each (int elem in c2)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();

// transform and display
    cliext::transform(c1.begin(), c1.begin() + 2,
        c2.begin(), c3.begin(), cliext::less_equal<int>());
    for each (int elem in c3)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();
    return (0);
    }
4 3
3 3
0 1

logical_and (STL/CLR)

Die Vorlagenklasse beschreibt einen Functor, der bei Aufruf nur "true" zurückgibt, wenn sowohl das erste Argument als auch der zweite Test als "true" verwendet werden. Sie verwenden es, um ein Funktionsobjekt in Bezug auf den Argumenttyp anzugeben.

Syntax

template<typename Arg>
    ref class logical_and
    { // wrap operator()
public:
    typedef Arg first_argument_type;
    typedef Arg second_argument_type;
    typedef bool result_type;
    typedef Microsoft::VisualC::StlClr::BinaryDelegate<
        first_argument_type, second_argument_type, result_type>
        delegate_type;

    logical_and();
    logical_and(logical_and<Arg>% right);

    result_type operator()(first_argument_type left,
        second_argument_type right);
    operator delegate_type^();
    };

Parameter

Arg
Der Typ der Argumente.

Elementfunktionen

Typendefinition Beschreibung
delegate_type Der Typ des generischen Delegaten.
first_argument_type Der Typ des ersten Arguments des Functors.
result_type Der Typ des Functorergebnisses.
second_argument_type Der Typ des zweiten Arguments des Functors.
Member Beschreibung
logical_and Erstellt den Functor.
Operator Beschreibung
operator() Berechnet die gewünschte Funktion.
operator delegate_type^ Wandelt den Functor in eine Stellvertretung um.

Hinweise

Die Vorlagenklasse beschreibt einen Zwei-Argument-Functor. Er definiert den Memberoperator operator() so, dass das Objekt, wenn das Objekt als Funktion aufgerufen wird, nur true zurückgibt, wenn sowohl das erste Argument als auch der zweite Test als "true" angegeben werden.

Sie können das Objekt auch als Funktionsargument übergeben, dessen Typ und delegate_type^ er entsprechend konvertiert wird.

Beispiel

// cliext_logical_and.cpp
// compile with: /clr
#include <cliext/algorithm>
#include <cliext/functional>
#include <cliext/vector>

typedef cliext::vector<int> Myvector;
int main()
    {
    Myvector c1;
    c1.push_back(2);
    c1.push_back(0);
    Myvector c2;
    c2.push_back(3);
    c2.push_back(0);
    Myvector c3(2, 0);

// display initial contents " 1 0" and " 1 0"
    for each (int elem in c1)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();

    for each (int elem in c2)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();

// transform and display
    cliext::transform(c1.begin(), c1.begin() + 2,
        c2.begin(), c3.begin(), cliext::logical_and<int>());
    for each (int elem in c3)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();
    return (0);
    }
2 0
3 0
1 0

logical_not (STL/CLR)

Die Vorlagenklasse beschreibt einen Functor, der bei Aufruf nur "true" zurückgibt, wenn beide Argumente als "false" getestet werden. Sie verwenden es, um ein Funktionsobjekt in Bezug auf den Argumenttyp anzugeben.

Syntax

template<typename Arg>
    ref class logical_not
    { // wrap operator()
public:
    typedef Arg argument_type;
    typedef bool result_type;
    typedef Microsoft::VisualC::StlClr::UnaryDelegate<
        argument_type, result_type>
        delegate_type;

    logical_not();
    logical_not(logical_not<Arg> %right);

    result_type operator()(argument_type left);
    operator delegate_type^();
    };

Parameter

Arg
Der Typ der Argumente.

Elementfunktionen

Typendefinition Beschreibung
argument_type Der Typ des Functor-Arguments.
delegate_type Der Typ des generischen Delegaten.
result_type Der Typ des Functorergebnisses.
Member Beschreibung
logical_not Erstellt den Functor.
Operator Beschreibung
operator() Berechnet die gewünschte Funktion.
operator delegate_type^ Wandelt den Functor in eine Stellvertretung um.

Hinweise

Die Vorlagenklasse beschreibt einen Ein-Argument-Functor. Er definiert den Memberoperator operator() , sodass das Objekt, wenn das Objekt als Funktion aufgerufen wird, nur true zurückgibt, wenn das Argument als falsch getestet wird.

Sie können das Objekt auch als Funktionsargument übergeben, dessen Typ und delegate_type^ er entsprechend konvertiert wird.

Beispiel

// cliext_logical_not.cpp
// compile with: /clr
#include <cliext/algorithm>
#include <cliext/functional>
#include <cliext/vector>

typedef cliext::vector<int> Myvector;
int main()
    {
    Myvector c1;
    c1.push_back(4);
    c1.push_back(0);
    Myvector c3(2, 0);

// display initial contents " 4 0"
    for each (int elem in c1)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();

// transform and display
    cliext::transform(c1.begin(), c1.begin() + 2,
        c3.begin(), cliext::logical_not<int>());
    for each (int elem in c3)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();
    return (0);
    }
4 0
0 1

logical_or (STL/CLR)

Die Vorlagenklasse beschreibt einen Functor, der, wenn sie aufgerufen wird, nur true zurückgibt, wenn entweder das erste Argument oder die zweite Prüfung als wahr ausgeführt wird. Sie verwenden es, um ein Funktionsobjekt in Bezug auf den Argumenttyp anzugeben.

Syntax

template<typename Arg>
    ref class logical_or
    { // wrap operator()
public:
    typedef Arg first_argument_type;
    typedef Arg second_argument_type;
    typedef bool result_type;
    typedef Microsoft::VisualC::StlClr::BinaryDelegate<
        first_argument_type, second_argument_type, result_type>
        delegate_type;

    logical_or();
    logical_or(logical_or<Arg>% right);

    result_type operator()(first_argument_type left,
        second_argument_type right);
    operator delegate_type^();
    };

Parameter

Arg
Der Typ der Argumente.

Elementfunktionen

Typendefinition Beschreibung
delegate_type Der Typ des generischen Delegaten.
first_argument_type Der Typ des ersten Arguments des Functors.
result_type Der Typ des Functorergebnisses.
second_argument_type Der Typ des zweiten Arguments des Functors.
Member Beschreibung
logical_or Erstellt den Functor.
Operator Beschreibung
operator() Berechnet die gewünschte Funktion.
operator delegate_type^ Wandelt den Functor in eine Stellvertretung um.

Hinweise

Die Vorlagenklasse beschreibt einen Zwei-Argument-Functor. Er definiert den Memberoperator operator() , sodass das Objekt, wenn das Objekt als Funktion aufgerufen wird, nur true zurückgibt, wenn entweder das erste Argument oder die zweite Als wahr getestet wird.

Sie können das Objekt auch als Funktionsargument übergeben, dessen Typ und delegate_type^ er entsprechend konvertiert wird.

Beispiel

// cliext_logical_or.cpp
// compile with: /clr
#include <cliext/algorithm>
#include <cliext/functional>
#include <cliext/vector>

typedef cliext::vector<int> Myvector;
int main()
    {
    Myvector c1;
    c1.push_back(2);
    c1.push_back(0);
    Myvector c2;
    c2.push_back(0);
    c2.push_back(0);
    Myvector c3(2, 0);

// display initial contents " 2 0" and " 0 0"
    for each (int elem in c1)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();

    for each (int elem in c2)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();

// transform and display
    cliext::transform(c1.begin(), c1.begin() + 2,
        c2.begin(), c3.begin(), cliext::logical_or<int>());
    for each (int elem in c3)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();
    return (0);
    }
2 0
0 0
1 0

minus (STL/CLR)

Die Vorlagenklasse beschreibt einen Functor, der bei Aufruf das erste Argument minus der zweiten zurückgibt. Sie verwenden es, um ein Funktionsobjekt in Bezug auf den Argumenttyp anzugeben.

Syntax

template<typename Arg>
    ref class minus
    { // wrap operator()
public:
    typedef Arg first_argument_type;
    typedef Arg second_argument_type;
    typedef Arg result_type;
    typedef Microsoft::VisualC::StlClr::BinaryDelegate<
        first_argument_type, second_argument_type, result_type>
        delegate_type;

    minus();
    minus(minus<Arg>% right);

    result_type operator()(first_argument_type left,
        second_argument_type right);
    operator delegate_type^();
    };

Parameter

Arg
Der Typ der Argumente und des Rückgabewerts.

Elementfunktionen

Typendefinition Beschreibung
delegate_type Der Typ des generischen Delegaten.
first_argument_type Der Typ des ersten Arguments des Functors.
result_type Der Typ des Functorergebnisses.
second_argument_type Der Typ des zweiten Arguments des Functors.
Member Beschreibung
minus Erstellt den Functor.
Operator Beschreibung
operator() Berechnet die gewünschte Funktion.
operator delegate_type^ Wandelt den Functor in eine Stellvertretung um.

Hinweise

Die Vorlagenklasse beschreibt einen Zwei-Argument-Functor. Er definiert den Memberoperator operator() , sodass, wenn das Objekt als Funktion aufgerufen wird, das erste Argument minus der zweiten zurückgibt.

Sie können das Objekt auch als Funktionsargument übergeben, dessen Typ und delegate_type^ er entsprechend konvertiert wird.

Beispiel

// cliext_minus.cpp
// compile with: /clr
#include <cliext/algorithm>
#include <cliext/functional>
#include <cliext/vector>

typedef cliext::vector<int> Myvector;
int main()
    {
    Myvector c1;
    c1.push_back(4);
    c1.push_back(3);
    Myvector c2;
    c2.push_back(2);
    c2.push_back(1);
    Myvector c3(2, 0);

// display initial contents " 4 3" and " 2 1"
    for each (int elem in c1)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();

    for each (int elem in c2)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();

// transform and display
    cliext::transform(c1.begin(), c1.begin() + 2,
        c2.begin(), c3.begin(), cliext::minus<int>());
    for each (int elem in c3)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();
    return (0);
    }
4 3
2 1
2 2

modulus (STL/CLR)

Die Vorlagenklasse beschreibt einen Functor, der, wenn sie aufgerufen wird, das erste Argumentmodul für die zweite zurückgibt. Sie verwenden es, um ein Funktionsobjekt in Bezug auf den Argumenttyp anzugeben.

Syntax

template<typename Arg>
    ref class modulus
    { // wrap operator()
public:
    typedef Arg first_argument_type;
    typedef Arg second_argument_type;
    typedef Arg result_type;
    typedef Microsoft::VisualC::StlClr::BinaryDelegate<
        first_argument_type, second_argument_type, result_type>
        delegate_type;

    modulus();
    modulus(modulus<Arg>% right);

    result_type operator()(first_argument_type left,
        second_argument_type right);
    operator delegate_type^();
    };

Parameter

Arg
Der Typ der Argumente und des Rückgabewerts.

Elementfunktionen

Typendefinition Beschreibung
delegate_type Der Typ des generischen Delegaten.
first_argument_type Der Typ des ersten Arguments des Functors.
result_type Der Typ des Functorergebnisses.
second_argument_type Der Typ des zweiten Arguments des Functors.
Member Beschreibung
modulus Erstellt den Functor.
Operator Beschreibung
operator() Berechnet die gewünschte Funktion.
operator delegate_type^ Wandelt den Functor in eine Stellvertretung um.

Hinweise

Die Vorlagenklasse beschreibt einen Zwei-Argument-Functor. Er definiert den Memberoperator operator() , sodass, wenn das Objekt als Funktion aufgerufen wird, das erste Argumentmodul die zweite zurückgibt.

Sie können das Objekt auch als Funktionsargument übergeben, dessen Typ und delegate_type^ er entsprechend konvertiert wird.

Beispiel

// cliext_modulus.cpp
// compile with: /clr
#include <cliext/algorithm>
#include <cliext/functional>
#include <cliext/vector>

typedef cliext::vector<int> Myvector;
int main()
    {
    Myvector c1;
    c1.push_back(4);
    c1.push_back(2);
    Myvector c2;
    c2.push_back(3);
    c2.push_back(1);
    Myvector c3(2, 0);

// display initial contents " 4 2" and " 3 1"
    for each (int elem in c1)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();

    for each (int elem in c2)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();

// transform and display
    cliext::transform(c1.begin(), c1.begin() + 2,
        c2.begin(), c3.begin(), cliext::modulus<int>());
    for each (int elem in c3)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();
    return (0);
    }
4 2
3 1
1 0

multiplies (STL/CLR)

Die Vorlagenklasse beschreibt einen Functor, der beim Aufrufen das erste Argument mal die zweite zurückgibt. Sie verwenden es, um ein Funktionsobjekt in Bezug auf den Argumenttyp anzugeben.

Syntax

template<typename Arg>
    ref class multiplies
    { // wrap operator()
public:
    typedef Arg first_argument_type;
    typedef Arg second_argument_type;
    typedef Arg result_type;
    typedef Microsoft::VisualC::StlClr::BinaryDelegate<
        first_argument_type, second_argument_type, result_type>
        delegate_type;

    multiplies();
    multiplies(multiplies<Arg>% right);

    result_type operator()(first_argument_type left,
        second_argument_type right);
    operator delegate_type^();
    };

Parameter

Arg
Der Typ der Argumente und des Rückgabewerts.

Elementfunktionen

Typendefinition Beschreibung
delegate_type Der Typ des generischen Delegaten.
first_argument_type Der Typ des ersten Arguments des Functors.
result_type Der Typ des Functorergebnisses.
second_argument_type Der Typ des zweiten Arguments des Functors.
Member Beschreibung
multiplies Erstellt den Functor.
Operator Beschreibung
operator() Berechnet die gewünschte Funktion.
operator delegate_type^ Wandelt den Functor in eine Stellvertretung um.

Hinweise

Die Vorlagenklasse beschreibt einen Zwei-Argument-Functor. Er definiert den Memberoperator operator() , sodass beim Aufrufen des Objekts als Funktion das erste Argument beim zweiten Argument zurückgegeben wird.

Sie können das Objekt auch als Funktionsargument übergeben, dessen Typ und delegate_type^ er entsprechend konvertiert wird.

Beispiel

// cliext_multiplies.cpp
// compile with: /clr
#include <cliext/algorithm>
#include <cliext/functional>
#include <cliext/vector>

typedef cliext::vector<int> Myvector;
int main()
    {
    Myvector c1;
    c1.push_back(4);
    c1.push_back(3);
    Myvector c2;
    c2.push_back(2);
    c2.push_back(1);
    Myvector c3(2, 0);

// display initial contents " 4 3" and " 2 1"
    for each (int elem in c1)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();

    for each (int elem in c2)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();

// transform and display
    cliext::transform(c1.begin(), c1.begin() + 2,
        c2.begin(), c3.begin(), cliext::multiplies<int>());
    for each (int elem in c3)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();
    return (0);
    }
4 3
2 1
8 3

negate (STL/CLR)

Die Vorlagenklasse beschreibt einen Functor, der, wenn sie aufgerufen wird, das Argument negiert zurückgibt. Sie verwenden es, um ein Funktionsobjekt in Bezug auf den Argumenttyp anzugeben.

Syntax

template<typename Arg>
    ref class negate
    { // wrap operator()
public:
    typedef Arg argument_type;
    typedef bool result_type;
    typedef Microsoft::VisualC::StlClr::UnaryDelegate<
        argument_type, result_type>
        delegate_type;

    negate();
    negate(negate<Arg>% right);

    result_type operator()(argument_type left);
    operator delegate_type^();
    };

Parameter

Arg
Der Typ der Argumente.

Elementfunktionen

Typendefinition Beschreibung
argument_type Der Typ des Functor-Arguments.
delegate_type Der Typ des generischen Delegaten.
result_type Der Typ des Functorergebnisses.
Member Beschreibung
negate Erstellt den Functor.
Operator Beschreibung
operator() Berechnet die gewünschte Funktion.
operator delegate_type^ Wandelt den Functor in eine Stellvertretung um.

Hinweise

Die Vorlagenklasse beschreibt einen Ein-Argument-Functor. Er definiert den Memberoperator operator() , sodass, wenn das Objekt als Funktion aufgerufen wird, sein Argument negiert zurückgibt.

Sie können das Objekt auch als Funktionsargument übergeben, dessen Typ und delegate_type^ er entsprechend konvertiert wird.

Beispiel

// cliext_negate.cpp
// compile with: /clr
#include <cliext/algorithm>
#include <cliext/functional>
#include <cliext/vector>

typedef cliext::vector<int> Myvector;
int main()
    {
    Myvector c1;
    c1.push_back(4);
    c1.push_back(-3);
    Myvector c3(2, 0);

// display initial contents " 4 -3"
    for each (int elem in c1)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();

// transform and display
    cliext::transform(c1.begin(), c1.begin() + 2,
        c3.begin(), cliext::negate<int>());
    for each (int elem in c3)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();
    return (0);
    }
4 -3
-4 3

not_equal_to (STL/CLR)

Die Vorlagenklasse beschreibt einen Functor, der, wenn sie aufgerufen wird, nur true zurückgibt, wenn das erste Argument nicht gleich dem zweiten ist. Sie verwenden es, um ein Funktionsobjekt in Bezug auf den Argumenttyp anzugeben.

Syntax

template<typename Arg>
    ref class not_equal_to
    { // wrap operator()
public:
    typedef Arg first_argument_type;
    typedef Arg second_argument_type;
    typedef bool result_type;
    typedef Microsoft::VisualC::StlClr::BinaryDelegate<
        first_argument_type, second_argument_type, result_type>
        delegate_type;

    not_equal_to();
    not_equal_to(not_equal_to<Arg>% right);

    result_type operator()(first_argument_type left,
        second_argument_type right);
    operator delegate_type^();
    };

Parameter

Arg
Der Typ der Argumente.

Elementfunktionen

Typendefinition Beschreibung
delegate_type Der Typ des generischen Delegaten.
first_argument_type Der Typ des ersten Arguments des Functors.
result_type Der Typ des Functorergebnisses.
second_argument_type Der Typ des zweiten Arguments des Functors.
Member Beschreibung
not_equal_to Erstellt den Functor.
Operator Beschreibung
operator() Berechnet die gewünschte Funktion.
operator delegate_type^ Wandelt den Functor in eine Stellvertretung um.

Hinweise

Die Vorlagenklasse beschreibt einen Zwei-Argument-Functor. Er definiert den Memberoperator operator() , sodass das erste Argument, wenn das Objekt als Funktion aufgerufen wird, nur true zurückgibt, wenn das erste Argument nicht dem zweiten entspricht.

Sie können das Objekt auch als Funktionsargument übergeben, dessen Typ und delegate_type^ er entsprechend konvertiert wird.

Beispiel

// cliext_not_equal_to.cpp
// compile with: /clr
#include <cliext/algorithm>
#include <cliext/functional>
#include <cliext/vector>

typedef cliext::vector<int> Myvector;
int main()
    {
    Myvector c1;
    c1.push_back(4);
    c1.push_back(3);
    Myvector c2;
    c2.push_back(4);
    c2.push_back(4);
    Myvector c3(2, 0);

// display initial contents " 4 3" and " 4 4"
    for each (int elem in c1)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();

    for each (int elem in c2)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();

// transform and display
    cliext::transform(c1.begin(), c1.begin() + 2,
        c2.begin(), c3.begin(), cliext::not_equal_to<int>());
    for each (int elem in c3)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();
    return (0);
    }
4 3
4 4
0 1

not1 (STL/CLR)

Generiert einen unary_negate für einen Functor.

Syntax

template<typename Fun>
    unary_negate<Fun> not1(Fun% functor);

Vorlagenparameter

Fun
Der Typ des Functors.

Funktionsparameter

functor
Der Functor, der umbrochen werden soll.

Hinweise

Die Funktionsvorlage gibt zurück unary_negate<Fun>(functor). Sie verwenden es als bequeme Möglichkeit, einen Ein-Argument-Functor in einen Functor zu umschließen, der seine logische NOT liefert.

Beispiel

// cliext_not1.cpp
// compile with: /clr
#include <cliext/algorithm>
#include <cliext/functional>
#include <cliext/vector>

typedef cliext::vector<int> Myvector;
int main()
    {
    Myvector c1;
    c1.push_back(4);
    c1.push_back(0);
    Myvector c3(2, 0);

// display initial contents " 4 0"
    for each (int elem in c1)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();

// transform and display
    cliext::logical_not<int> not_op;

    cliext::transform(c1.begin(), c1.begin() + 2, c3.begin(),
        cliext::unary_negate<cliext::logical_not<int> >(not_op));
    for each (int elem in c3)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();

// transform and display with function
    cliext::transform(c1.begin(), c1.begin() + 2, c3.begin(),
        cliext::not1(not_op));
    for each (int elem in c3)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();
    return (0);
    }
4 0
1 0
1 0

not2 (STL/CLR)

Generiert einen binary_negate für einen Functor.

Syntax

template<typename Fun>
    binary_negate<Fun> not2(Fun% functor);

Vorlagenparameter

Fun
Der Typ des Functors.

Funktionsparameter

functor
Der Functor, der umbrochen werden soll.

Hinweise

Die Funktionsvorlage gibt zurück binary_negate<Fun>(functor). Sie verwenden es als bequeme Möglichkeit, einen Zwei-Argument-Functor in einen Functor zu umschließen, der seine logische NOT liefert.

Beispiel

// cliext_not2.cpp
// compile with: /clr
#include <cliext/algorithm>
#include <cliext/functional>
#include <cliext/vector>

typedef cliext::vector<int> Myvector;
int main()
    {
    Myvector c1;
    c1.push_back(4);
    c1.push_back(3);
    Myvector c2;
    c2.push_back(4);
    c2.push_back(4);
    Myvector c3(2, 0);

// display initial contents " 4 3" and " 4 4"
    for each (int elem in c1)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();

    for each (int elem in c2)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();

// transform and display
    cliext::less<int> less_op;

    cliext::transform(c1.begin(), c1.begin() + 2,
        c2.begin(), c3.begin(),
        cliext::binary_negate<cliext::less<int> >(less_op));
    for each (int elem in c3)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();

// transform and display with function
    cliext::transform(c1.begin(), c1.begin() + 2,
        c2.begin(), c3.begin(), cliext::not2(less_op));
    for each (int elem in c3)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();
    return (0);
    }
4 3
4 4
1 0
1 0

plus (STL/CLR)

Die Vorlagenklasse beschreibt einen Functor, der bei Aufruf das erste Argument plus die zweite zurückgibt. Sie verwenden es, um ein Funktionsobjekt in Bezug auf den Argumenttyp anzugeben.

Syntax

template<typename Arg>
    ref class plus
    { // wrap operator()
public:
    typedef Arg first_argument_type;
    typedef Arg second_argument_type;
    typedef Arg result_type;
    typedef Microsoft::VisualC::StlClr::BinaryDelegate<
        first_argument_type, second_argument_type, result_type>
        delegate_type;

    plus();
    plus(plus<Arg>% right);

    result_type operator()(first_argument_type left,
        second_argument_type right);
    operator delegate_type^();
    };

Parameter

Arg
Der Typ der Argumente und des Rückgabewerts.

Elementfunktionen

Typendefinition Beschreibung
delegate_type Der Typ des generischen Delegaten.
first_argument_type Der Typ des ersten Arguments des Functors.
result_type Der Typ des Functorergebnisses.
second_argument_type Der Typ des zweiten Arguments des Functors.
Member Beschreibung
plus Erstellt den Functor.
Operator Beschreibung
operator() Berechnet die gewünschte Funktion.
operator delegate_type^ Wandelt den Functor in eine Stellvertretung um.

Hinweise

Die Vorlagenklasse beschreibt einen Zwei-Argument-Functor. Er definiert den Memberoperator operator() , sodass, wenn das Objekt als Funktion aufgerufen wird, das erste Argument plus die zweite zurückgibt.

Sie können das Objekt auch als Funktionsargument übergeben, dessen Typ und delegate_type^ er entsprechend konvertiert wird.

Beispiel

// cliext_plus.cpp
// compile with: /clr
#include <cliext/algorithm>
#include <cliext/functional>
#include <cliext/vector>

typedef cliext::vector<int> Myvector;
int main()
    {
    Myvector c1;
    c1.push_back(4);
    c1.push_back(3);
    Myvector c2;
    c2.push_back(2);
    c2.push_back(1);
    Myvector c3(2, 0);

// display initial contents " 4 3" and " 2 1"
    for each (int elem in c1)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();

    for each (int elem in c2)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();

// transform and display
    cliext::transform(c1.begin(), c1.begin() + 2,
        c2.begin(), c3.begin(), cliext::plus<int>());
    for each (int elem in c3)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();
    return (0);
    }
4 3
2 1
6 4

unary_delegate (STL/CLR)

Die generische Klasse beschreibt einen 1-Argument-Delegaten. Sie verwenden ihn, um einen Delegat in Bezug auf das Argument und die Rückgabetypen anzugeben.

Syntax

generic<typename Arg,
    typename Result>
    delegate Result unary_delegate(Arg);

Parameter

Arg
Der Typ des Arguments.

Result
Der Rückgabetyp.

Hinweise

Der generische Delegat beschreibt eine Ein-Argument-Funktion.

In diesen Funktionsvorlagen:

unary_delegate<int, int> Fun1;

unary_delegate<int, int> Fun2;

die Typen Fun1 und Fun2 Synonyme sind, während für:

delegate int Fun1(int);

delegate int Fun2(int);

sie sind nicht derselbe Typ.

Beispiel

// cliext_unary_delegate.cpp
// compile with: /clr
#include <cliext/functional>

int hash_val(wchar_t val)
    {
    return ((val * 17 + 31) % 67);
    }

typedef cliext::unary_delegate<wchar_t, int> Mydelegate;
int main()
    {
    Mydelegate^ myhash = gcnew Mydelegate(&hash_val);

    System::Console::WriteLine("hash(L'a') = {0}", myhash(L'a'));
    System::Console::WriteLine("hash(L'b') = {0}", myhash(L'b'));
    return (0);
    }
hash(L'a') = 5
hash(L'b') = 22

unary_delegate_noreturn (STL/CLR)

Die generische Klasse beschreibt einen Ein-Argument-Delegaten, der zurückgegeben wird void. Sie verwenden ihn, um einen Delegat in Bezug auf den Argumenttyp anzugeben.

Syntax

generic<typename Arg>
    delegate void unary_delegate_noreturn(Arg);

Parameter

Arg
Der Typ des Arguments.

Hinweise

Der generische Delegat beschreibt eine Ein-Argument-Funktion, die zurückgegeben wird void.

In diesen Funktionsvorlagen:

unary_delegate_noreturn<int> Fun1;

unary_delegate_noreturn<int> Fun2;

die Typen Fun1 und Fun2 Synonyme sind, während für:

delegate void Fun1(int);

delegate void Fun2(int);

sie sind nicht derselbe Typ.

Beispiel

// cliext_unary_delegate_noreturn.cpp
// compile with: /clr
#include <cliext/functional>

void hash_val(wchar_t val)
    {
    System::Console::WriteLine("hash({0}) = {1}",
       val, (val * 17 + 31) % 67);
    }

typedef cliext::unary_delegate_noreturn<wchar_t> Mydelegate;
int main()
    {
    Mydelegate^ myhash = gcnew Mydelegate(&hash_val);

    myhash(L'a');
    myhash(L'b');
    return (0);
    }
hash(a) = 5
hash(b) = 22

unary_negate (STL/CLR)

Die Vorlagenklasse beschreibt einen Functor, der, wenn sie aufgerufen wird, die logische NOT des gespeicherten Ein-Argument-Functors zurückgibt. Sie verwenden es, um ein Funktionsobjekt in Bezug auf den gespeicherten Functor anzugeben.

Syntax

template<typename Fun>
    ref class unary_negate
    { // wrap operator()
public:
    typedef Fun stored_function_type;
    typedef typename Fun::argument_type argument_type;
    typedef bool result_type;
    typedef Microsoft::VisualC::StlClr::UnaryDelegate<
        argument_type, result_type>
        delegate_type;

    unary_negate(Fun% functor);
    unary_negate(unary_negate<Fun>% right);

    result_type operator()(argument_type left);
    operator delegate_type^();
    };

Parameter

Fun
Der Typ des gespeicherten Functors.

Elementfunktionen

Typendefinition Beschreibung
argument_type Der Typ des Functor-Arguments.
delegate_type Der Typ des generischen Delegaten.
result_type Der Typ des Functorergebnisses.
Member Beschreibung
unary_negate Erstellt den Functor.
Operator Beschreibung
operator() Berechnet die gewünschte Funktion.
delegate_type^ Wandelt den Functor in eine Stellvertretung um.

Hinweise

Die Vorlagenklasse beschreibt einen Ein-Argument-Functor, der einen anderen Ein-Argument-Functor speichert. Er definiert den Memberoperator operator() so, dass, wenn das Objekt als Funktion aufgerufen wird, die logische NOT des gespeicherten Functors zurückgibt, der mit dem Argument aufgerufen wird.

Sie können das Objekt auch als Funktionsargument übergeben, dessen Typ und delegate_type^ er entsprechend konvertiert wird.

Beispiel

// cliext_unary_negate.cpp
// compile with: /clr
#include <cliext/algorithm>
#include <cliext/functional>
#include <cliext/vector>

typedef cliext::vector<int> Myvector;
int main()
    {
    Myvector c1;
    c1.push_back(4);
    c1.push_back(0);
    Myvector c3(2, 0);

// display initial contents " 4 0"
    for each (int elem in c1)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();

// transform and display
    cliext::logical_not<int> not_op;

    cliext::transform(c1.begin(), c1.begin() + 2, c3.begin(),
        cliext::unary_negate<cliext::logical_not<int> >(not_op));
    for each (int elem in c3)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();

// transform and display with function
    cliext::transform(c1.begin(), c1.begin() + 2, c3.begin(),
        cliext::not1(not_op));
    for each (int elem in c3)
        System::Console::Write(" {0}", elem);
    System::Console::WriteLine();
    return (0);
    }
4 0
1 0
1 0