Condividi tramite


functional (STL/CLR)

Includere l'intestazione <cliext/functional> STL/CLR per definire modelli di classe funzionale e delegati e funzioni del modello correlati.

Sintassi

#include <functional>

Requisiti

Intestazione:<cliext/functional>

Spazio dei nomi: cliext

Dichiarazioni

Delega Descrizione
binary_delegate (STL/CLR) Delegato a due argomenti.
binary_delegate_noreturn (STL/CLR) Delegato a due argomenti che restituisce void.
unary_delegate (STL/CLR) Delegato a un solo argomento.
unary_delegate_noreturn (STL/CLR) Delegato a un argomento che restituisce void.
Classe Descrizione
binary_negate (STL/CLR) Functor per negare un funtore a due argomenti.
binder1st (STL/CLR) Functor per associare il primo argomento a un funtore a due argomenti.
binder2nd (STL/CLR) Functor per associare il secondo argomento a un funtore a due argomenti.
divides (STL/CLR) Divide functor.
equal_to (STL/CLR) Funtore di confronto uguale.
greater (STL/CLR) Funtore di confronto maggiore.
greater_equal (STL/CLR) Funtore di confronto maggiore o uguale.
less (STL/CLR) Funtore di confronto minore.
less_equal (STL/CLR) Funtore di confronto minore o uguale.
logical_and (STL/CLR) Funtore AND logico.
logical_not (STL/CLR) Funtore NOT logico.
logical_or (STL/CLR) Funtore OR logico.
minus (STL/CLR) Sottrae funtore.
modulus (STL/CLR) Functor modulo.
multiplies (STL/CLR) Moltiplicare il funtore.
negate (STL/CLR) Functor per restituire l'argomento negato.
not_equal_to (STL/CLR) Funtore di confronto diverso.
plus (STL/CLR) Aggiungere functor.
unary_negate (STL/CLR) Functor per negare un funtore a un argomento.
Funzione Descrizione
bind1st (STL/CLR) Genera un binder1st per un argomento e un funtore.
bind2nd (STL/CLR) Genera un binder2nd per un argomento e un funtore.
not1 (STL/CLR) Genera un unary_negate per un functor.
not2 (STL/CLR) Genera un binary_negate per un functor.

Membri

binary_delegate (STL/CLR)

La classe generica descrive un delegato a due argomenti. Viene usato per specificare un delegato in termini di argomento e tipi restituiti.

Sintassi

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

Parametri

Arg1
Tipo del primo argomento.

Arg2
Tipo del secondo argomento.

Result
Tipo restituito.

Osservazioni:

Il delegato generico descrive una funzione a due argomenti.

Nei modelli di funzione seguenti:

binary_delegate<int, int, int> Fun1;

binary_delegate<int, int, int> Fun2;

i tipi Fun1 e Fun2 sono sinonimi, mentre per:

delegate int Fun1(int, int);

delegate int Fun2(int, int);

non sono dello stesso tipo.

Esempio

// 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)

La classe generica descrive un delegato a due argomenti che restituisce void. Viene usato per specificare un delegato in termini di argomento.

Sintassi

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

Parametri

Arg1
Tipo del primo argomento.

Arg2
Tipo del secondo argomento.

Osservazioni:

Il delegato generico descrive una funzione a due argomenti che restituisce void.

Nei modelli di funzione seguenti:

binary_delegate_noreturn<int, int> Fun1;

binary_delegate_noreturn<int, int> Fun2;

i tipi Fun1 e Fun2 sono sinonimi, mentre per:

delegate void Fun1(int, int);

delegate void Fun2(int, int);

non sono dello stesso tipo.

Esempio

// 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)

La classe modello descrive un funtore che, quando viene chiamato, restituisce il NOT logico del funtore a due argomenti archiviato. Viene usato per specificare un oggetto funzione in termini di funtore archiviato.

Sintassi

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^();
    };

Parametri

Fun
Tipo del funtore archiviato.

Funzioni di membro

Definizione del tipo Descrizione
delegate_type Tipo del delegato generico.
first_argument_type Tipo del functor primo argomento.
result_type Tipo del risultato del funtore.
second_argument_type Tipo del secondo argomento functor.
stored_function_type Tipo del funtore.
Membro Descrizione
binary_negate Costruisce il funtore.
Operatore Descrizione
operator() Calcola la funzione desiderata.
operator delegate_type^() Esegue il cast del funtore a un delegato.

Osservazioni:

La classe modello descrive un funtore a due argomenti che archivia un altro funtore a due argomenti. Definisce l'operatore operator() membro in modo che, quando l'oggetto viene chiamato come funzione, restituisce il NOT logico del funtore archiviato chiamato con i due argomenti.

È anche possibile passare l'oggetto come argomento della funzione il cui tipo è delegate_type^ e verrà convertito in modo appropriato.

Esempio

// 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)

Genera un oggetto per un binder1st argomento e un funtore.

Sintassi

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

Parametri modello

Arg
Il tipo di argomento.

Fun
Tipo del funtore.

Parametri della funzione

functor
Funtore da avvolgere.

left
Primo argomento a capo.

Osservazioni:

Il modello di funzione restituisce binder1st<Fun>(functor, left). Lo si usa come modo pratico per eseguire il wrapping di un funtore a due argomenti e il primo argomento in un funtore a un argomento che lo chiama con un secondo argomento.

Esempio

// 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)

Genera un oggetto per un binder2nd argomento e un funtore.

Sintassi

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

Parametri modello

Arg
Il tipo di argomento.

Fun
Tipo del funtore.

Parametri della funzione

functor
Funtore da avvolgere.

right
Secondo argomento di cui eseguire il wrapping.

Osservazioni:

Il modello di funzione restituisce binder2nd<Fun>(functor, right). Lo si usa come modo pratico per eseguire il wrapping di un funtore a due argomenti e il secondo argomento in un funtore a un argomento che lo chiama con un primo argomento.

Esempio

// 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)

La classe modello descrive un funtore a un argomento che, quando viene chiamato, restituisce il funtore a due argomenti archiviato chiamato con il primo argomento archiviato e il secondo argomento fornito. Viene usato per specificare un oggetto funzione in termini di funtore archiviato.

Sintassi

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^();
    };

Parametri

Fun
Tipo del funtore archiviato.

Funzioni di membro

Definizione del tipo Descrizione
delegate_type Tipo del delegato generico.
first_argument_type Tipo del functor primo argomento.
result_type Tipo del risultato del funtore.
second_argument_type Tipo del secondo argomento functor.
stored_function_type Tipo del funtore.
Membro Descrizione
binder1st Costruisce il funtore.
Operatore Descrizione
operator() Calcola la funzione desiderata.
operator delegate_type^() Esegue il cast del funtore a un delegato.

Osservazioni:

La classe modello descrive un funtore a un argomento che archivia un funtore a due argomenti e un primo argomento. Definisce l'operatore operator() membro in modo che, quando l'oggetto viene chiamato come funzione, restituisce il risultato della chiamata del funtore archiviato con il primo argomento archiviato e il secondo argomento fornito.

È anche possibile passare l'oggetto come argomento della funzione il cui tipo è delegate_type^ e verrà convertito in modo appropriato.

Esempio

// 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)

La classe modello descrive un funtore a un argomento che, quando viene chiamato, restituisce il funtore a due argomenti archiviato chiamato con il primo argomento fornito e il secondo argomento archiviato. Viene usato per specificare un oggetto funzione in termini di funtore archiviato.

Sintassi

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^();
    };

Parametri

Fun
Tipo del funtore archiviato.

Funzioni di membro

Definizione del tipo Descrizione
delegate_type Tipo del delegato generico.
first_argument_type Tipo del functor primo argomento.
result_type Tipo del risultato del funtore.
second_argument_type Tipo del secondo argomento functor.
stored_function_type Tipo del funtore.
Membro Descrizione
binder2nd Costruisce il funtore.
Operatore Descrizione
operator() Calcola la funzione desiderata.
operator delegate_type^() Esegue il cast del funtore a un delegato.

Osservazioni:

La classe modello descrive un funtore a un argomento che archivia un funtore a due argomenti e un secondo argomento. Definisce l'operatore operator() membro in modo che, quando l'oggetto viene chiamato come funzione, restituisce il risultato della chiamata del funtore archiviato con il primo argomento fornito e il secondo argomento archiviato.

È anche possibile passare l'oggetto come argomento della funzione il cui tipo è delegate_type^ e verrà convertito in modo appropriato.

Esempio

// 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)

La classe modello descrive un funtore che, quando viene chiamato, restituisce il primo argomento diviso per il secondo. Viene usato per specificare un oggetto funzione in termini di tipo argomento.

Sintassi

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^();
    };

Parametri

Arg
Tipo di argomenti e valore restituito.

Funzioni di membro

Definizione del tipo Descrizione
delegate_type Tipo del delegato generico.
first_argument_type Tipo del functor primo argomento.
result_type Tipo del risultato del funtore.
second_argument_type Tipo del secondo argomento functor.
Membro Descrizione
divides Costruisce il funtore.
Operatore Descrizione
operator() Calcola la funzione desiderata.
operator delegate_type^() Esegue il cast del funtore a un delegato.

Osservazioni:

La classe modello descrive un funtore a due argomenti. Definisce l'operatore operator() membro in modo che, quando l'oggetto viene chiamato come funzione, restituisce il primo argomento diviso per il secondo.

È anche possibile passare l'oggetto come argomento della funzione il cui tipo è delegate_type^ e verrà convertito in modo appropriato.

Esempio

// 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)

La classe modello descrive un funtore che, quando viene chiamato, restituisce true solo se il primo argomento è uguale al secondo. Viene usato per specificare un oggetto funzione in termini di tipo argomento.

Sintassi

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^();
    };

Parametri

Arg
Tipo degli argomenti.

Funzioni di membro

Definizione del tipo Descrizione
delegate_type Tipo del delegato generico.
first_argument_type Tipo del functor primo argomento.
result_type Tipo del risultato del funtore.
second_argument_type Tipo del secondo argomento functor.
Membro Descrizione
equal_to Costruisce il funtore.
Operatore Descrizione
operator() Calcola la funzione desiderata.
operator delegate_type^() Esegue il cast del funtore a un delegato.

Osservazioni:

La classe modello descrive un funtore a due argomenti. Definisce l'operatore operator() membro in modo che, quando l'oggetto viene chiamato come funzione, restituisce true solo se il primo argomento è uguale al secondo.

È anche possibile passare l'oggetto come argomento della funzione il cui tipo è delegate_type^ e verrà convertito in modo appropriato.

Esempio

// 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)

La classe modello descrive un funtore che, quando viene chiamato, restituisce true solo se il primo argomento è maggiore del secondo. Viene usato per specificare un oggetto funzione in termini di tipo argomento.

Sintassi

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^();
    };

Parametri

Arg
Tipo degli argomenti.

Funzioni di membro

Definizione del tipo Descrizione
delegate_type Tipo del delegato generico.
first_argument_type Tipo del functor primo argomento.
result_type Tipo del risultato del funtore.
second_argument_type Tipo del secondo argomento functor.
Membro Descrizione
greater Costruisce il funtore.
Operatore Descrizione
operator() Calcola la funzione desiderata.
operator delegate_type^ Esegue il cast del funtore a un delegato.

Osservazioni:

La classe modello descrive un funtore a due argomenti. Definisce l'operatore operator() membro in modo che, quando l'oggetto viene chiamato come funzione, restituisce true solo se il primo argomento è maggiore del secondo.

È anche possibile passare l'oggetto come argomento della funzione il cui tipo è delegate_type^ e verrà convertito in modo appropriato.

Esempio

// 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)

La classe modello descrive un funtore che, quando viene chiamato, restituisce true solo se il primo argomento è maggiore o uguale al secondo. Viene usato per specificare un oggetto funzione in termini di tipo argomento.

Sintassi

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^();
    };

Parametri

Arg
Tipo degli argomenti.

Funzioni di membro

Definizione del tipo Descrizione
delegate_type Tipo del delegato generico.
first_argument_type Tipo del functor primo argomento.
result_type Tipo del risultato del funtore.
second_argument_type Tipo del secondo argomento functor.
Membro Descrizione
greater_equal Costruisce il funtore.
Operatore Descrizione
operator() Calcola la funzione desiderata.
operator delegate_type^ Esegue il cast del funtore a un delegato.

Osservazioni:

La classe modello descrive un funtore a due argomenti. Definisce l'operatore operator() membro in modo che, quando l'oggetto viene chiamato come funzione, restituisce true solo se il primo argomento è maggiore o uguale al secondo.

È anche possibile passare l'oggetto come argomento della funzione il cui tipo è delegate_type^ e verrà convertito in modo appropriato.

Esempio

// 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)

La classe modello descrive un funtore che, quando viene chiamato, restituisce true solo se il primo argomento è minore del secondo. Viene usato per specificare un oggetto funzione in termini di tipo argomento.

Sintassi

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^();
    };

Parametri

Arg
Tipo degli argomenti.

Funzioni di membro

Definizione del tipo Descrizione
delegate_type Tipo del delegato generico.
first_argument_type Tipo del functor primo argomento.
result_type Tipo del risultato del funtore.
second_argument_type Tipo del secondo argomento functor.
Membro Descrizione
less Costruisce il funtore.
Operatore Descrizione
operator() Calcola la funzione desiderata.
operator delegate_type^ Esegue il cast del funtore a un delegato.

Osservazioni:

La classe modello descrive un funtore a due argomenti. Definisce l'operatore operator() membro in modo che, quando l'oggetto viene chiamato come funzione, restituisce true solo se il primo argomento è minore del secondo.

È anche possibile passare l'oggetto come argomento della funzione il cui tipo è delegate_type^ e verrà convertito in modo appropriato.

Esempio

// 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)

La classe modello descrive un funtore che, quando viene chiamato, restituisce true solo se il primo argomento è minore o uguale al secondo. Viene usato per specificare un oggetto funzione in termini di tipo argomento.

Sintassi

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^();
    };

Parametri

Arg
Tipo degli argomenti.

Funzioni di membro

Definizione del tipo Descrizione
delegate_type Tipo del delegato generico.
first_argument_type Tipo del functor primo argomento.
result_type Tipo del risultato del funtore.
second_argument_type Tipo del secondo argomento functor.
Membro Descrizione
less_equal Costruisce il funtore.
Operatore Descrizione
operator() Calcola la funzione desiderata.
operator delegate_type^ Esegue il cast del funtore a un delegato.

Osservazioni:

La classe modello descrive un funtore a due argomenti. Definisce l'operatore operator() membro in modo che, quando l'oggetto viene chiamato come funzione, restituisce true solo se il primo argomento è minore o uguale al secondo.

È anche possibile passare l'oggetto come argomento della funzione il cui tipo è delegate_type^ e verrà convertito in modo appropriato.

Esempio

// 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)

La classe modello descrive un funtore che, quando viene chiamato, restituisce true solo se sia il primo argomento che il secondo test come true. Viene usato per specificare un oggetto funzione in termini di tipo argomento.

Sintassi

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^();
    };

Parametri

Arg
Tipo degli argomenti.

Funzioni di membro

Definizione del tipo Descrizione
delegate_type Tipo del delegato generico.
first_argument_type Tipo del functor primo argomento.
result_type Tipo del risultato del funtore.
second_argument_type Tipo del secondo argomento functor.
Membro Descrizione
logical_and Costruisce il funtore.
Operatore Descrizione
operator() Calcola la funzione desiderata.
operator delegate_type^ Esegue il cast del funtore a un delegato.

Osservazioni:

La classe modello descrive un funtore a due argomenti. Definisce l'operatore operator() membro in modo che, quando l'oggetto viene chiamato come funzione, restituisce true solo se sia il primo argomento che il secondo test come true.

È anche possibile passare l'oggetto come argomento della funzione il cui tipo è delegate_type^ e verrà convertito in modo appropriato.

Esempio

// 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)

La classe modello descrive un funtore che, quando viene chiamato, restituisce true solo se uno dei relativi argomenti viene verificato come false. Viene usato per specificare un oggetto funzione in termini di tipo argomento.

Sintassi

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^();
    };

Parametri

Arg
Tipo degli argomenti.

Funzioni di membro

Definizione del tipo Descrizione
argument_type Tipo dell'argomento functor.
delegate_type Tipo del delegato generico.
result_type Tipo del risultato del funtore.
Membro Descrizione
logical_not Costruisce il funtore.
Operatore Descrizione
operator() Calcola la funzione desiderata.
operator delegate_type^ Esegue il cast del funtore a un delegato.

Osservazioni:

La classe modello descrive un funtore a un argomento. Definisce l'operatore operator() membro in modo che, quando l'oggetto viene chiamato come funzione, restituisce true solo se il relativo argomento viene verificato come false.

È anche possibile passare l'oggetto come argomento della funzione il cui tipo è delegate_type^ e verrà convertito in modo appropriato.

Esempio

// 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)

La classe modello descrive un funtore che, quando viene chiamato, restituisce true solo se il primo argomento o il secondo test è true. Viene usato per specificare un oggetto funzione in termini di tipo argomento.

Sintassi

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^();
    };

Parametri

Arg
Tipo degli argomenti.

Funzioni di membro

Definizione del tipo Descrizione
delegate_type Tipo del delegato generico.
first_argument_type Tipo del functor primo argomento.
result_type Tipo del risultato del funtore.
second_argument_type Tipo del secondo argomento functor.
Membro Descrizione
logical_or Costruisce il funtore.
Operatore Descrizione
operator() Calcola la funzione desiderata.
operator delegate_type^ Esegue il cast del funtore a un delegato.

Osservazioni:

La classe modello descrive un funtore a due argomenti. Definisce l'operatore operator() membro in modo che, quando l'oggetto viene chiamato come funzione, restituisce true solo se il primo argomento o il secondo test come true.

È anche possibile passare l'oggetto come argomento della funzione il cui tipo è delegate_type^ e verrà convertito in modo appropriato.

Esempio

// 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)

La classe modello descrive un funtore che, quando viene chiamato, restituisce il primo argomento meno il secondo. Viene usato per specificare un oggetto funzione in termini di tipo argomento.

Sintassi

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^();
    };

Parametri

Arg
Tipo di argomenti e valore restituito.

Funzioni di membro

Definizione del tipo Descrizione
delegate_type Tipo del delegato generico.
first_argument_type Tipo del functor primo argomento.
result_type Tipo del risultato del funtore.
second_argument_type Tipo del secondo argomento functor.
Membro Descrizione
minus Costruisce il funtore.
Operatore Descrizione
operator() Calcola la funzione desiderata.
operator delegate_type^ Esegue il cast del funtore a un delegato.

Osservazioni:

La classe modello descrive un funtore a due argomenti. Definisce l'operatore operator() membro in modo che, quando l'oggetto viene chiamato come funzione, restituisce il primo argomento meno il secondo.

È anche possibile passare l'oggetto come argomento della funzione il cui tipo è delegate_type^ e verrà convertito in modo appropriato.

Esempio

// 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)

La classe modello descrive un funtore che, quando viene chiamato, restituisce il primo argomento modulo il secondo. Viene usato per specificare un oggetto funzione in termini di tipo argomento.

Sintassi

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^();
    };

Parametri

Arg
Tipo di argomenti e valore restituito.

Funzioni di membro

Definizione del tipo Descrizione
delegate_type Tipo del delegato generico.
first_argument_type Tipo del functor primo argomento.
result_type Tipo del risultato del funtore.
second_argument_type Tipo del secondo argomento functor.
Membro Descrizione
modulus Costruisce il funtore.
Operatore Descrizione
operator() Calcola la funzione desiderata.
operator delegate_type^ Esegue il cast del funtore a un delegato.

Osservazioni:

La classe modello descrive un funtore a due argomenti. Definisce l'operatore operator() membro in modo che, quando l'oggetto viene chiamato come funzione, restituisce il primo argomento modulo il secondo.

È anche possibile passare l'oggetto come argomento della funzione il cui tipo è delegate_type^ e verrà convertito in modo appropriato.

Esempio

// 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)

La classe modello descrive un funtore che, quando viene chiamato, restituisce il primo argomento volte al secondo. Viene usato per specificare un oggetto funzione in termini di tipo argomento.

Sintassi

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^();
    };

Parametri

Arg
Tipo di argomenti e valore restituito.

Funzioni di membro

Definizione del tipo Descrizione
delegate_type Tipo del delegato generico.
first_argument_type Tipo del functor primo argomento.
result_type Tipo del risultato del funtore.
second_argument_type Tipo del secondo argomento functor.
Membro Descrizione
multiplies Costruisce il funtore.
Operatore Descrizione
operator() Calcola la funzione desiderata.
operator delegate_type^ Esegue il cast del funtore a un delegato.

Osservazioni:

La classe modello descrive un funtore a due argomenti. Definisce l'operatore operator() membro in modo che, quando l'oggetto viene chiamato come funzione, restituisce il primo argomento volte al secondo.

È anche possibile passare l'oggetto come argomento della funzione il cui tipo è delegate_type^ e verrà convertito in modo appropriato.

Esempio

// 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)

La classe modello descrive un funtore che, quando viene chiamato, restituisce il relativo argomento negato. Viene usato per specificare un oggetto funzione in termini di tipo argomento.

Sintassi

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^();
    };

Parametri

Arg
Tipo degli argomenti.

Funzioni di membro

Definizione del tipo Descrizione
argument_type Tipo dell'argomento functor.
delegate_type Tipo del delegato generico.
result_type Tipo del risultato del funtore.
Membro Descrizione
negate Costruisce il funtore.
Operatore Descrizione
operator() Calcola la funzione desiderata.
operator delegate_type^ Esegue il cast del funtore a un delegato.

Osservazioni:

La classe modello descrive un funtore a un argomento. Definisce l'operatore operator() membro in modo che, quando l'oggetto viene chiamato come funzione, restituisce il relativo argomento negato.

È anche possibile passare l'oggetto come argomento della funzione il cui tipo è delegate_type^ e verrà convertito in modo appropriato.

Esempio

// 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)

La classe modello descrive un funtore che, quando viene chiamato, restituisce true solo se il primo argomento non è uguale al secondo. Viene usato per specificare un oggetto funzione in termini di tipo argomento.

Sintassi

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^();
    };

Parametri

Arg
Tipo degli argomenti.

Funzioni di membro

Definizione del tipo Descrizione
delegate_type Tipo del delegato generico.
first_argument_type Tipo del functor primo argomento.
result_type Tipo del risultato del funtore.
second_argument_type Tipo del secondo argomento functor.
Membro Descrizione
not_equal_to Costruisce il funtore.
Operatore Descrizione
operator() Calcola la funzione desiderata.
operator delegate_type^ Esegue il cast del funtore a un delegato.

Osservazioni:

La classe modello descrive un funtore a due argomenti. Definisce l'operatore operator() membro in modo che, quando l'oggetto viene chiamato come funzione, restituisce true solo se il primo argomento non è uguale al secondo.

È anche possibile passare l'oggetto come argomento della funzione il cui tipo è delegate_type^ e verrà convertito in modo appropriato.

Esempio

// 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)

Genera un oggetto unary_negate per un funtore.

Sintassi

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

Parametri modello

Fun
Tipo del funtore.

Parametri della funzione

functor
Funtore da avvolgere.

Osservazioni:

Il modello di funzione restituisce unary_negate<Fun>(functor). Lo si usa come modo pratico per eseguire il wrapping di un funtore a un argomento in un funtore che fornisce il relativo NOT logico.

Esempio

// 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)

Genera un oggetto binary_negate per un funtore.

Sintassi

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

Parametri modello

Fun
Tipo del funtore.

Parametri della funzione

functor
Funtore da avvolgere.

Osservazioni:

Il modello di funzione restituisce binary_negate<Fun>(functor). Lo si usa come modo pratico per eseguire il wrapping di un funtore a due argomenti in un funtore che fornisce il relativo NOT logico.

Esempio

// 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)

La classe modello descrive un funtore che, quando viene chiamato, restituisce il primo argomento più il secondo. Viene usato per specificare un oggetto funzione in termini di tipo argomento.

Sintassi

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^();
    };

Parametri

Arg
Tipo di argomenti e valore restituito.

Funzioni di membro

Definizione del tipo Descrizione
delegate_type Tipo del delegato generico.
first_argument_type Tipo del functor primo argomento.
result_type Tipo del risultato del funtore.
second_argument_type Tipo del secondo argomento functor.
Membro Descrizione
plus Costruisce il funtore.
Operatore Descrizione
operator() Calcola la funzione desiderata.
operator delegate_type^ Esegue il cast del funtore a un delegato.

Osservazioni:

La classe modello descrive un funtore a due argomenti. Definisce l'operatore operator() membro in modo che, quando l'oggetto viene chiamato come funzione, restituisce il primo argomento più il secondo.

È anche possibile passare l'oggetto come argomento della funzione il cui tipo è delegate_type^ e verrà convertito in modo appropriato.

Esempio

// 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)

La classe generica descrive un delegato di un argomento. Viene usato per specificare un delegato in termini di argomento e tipi restituiti.

Sintassi

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

Parametri

Arg
Il tipo di argomento.

Result
Tipo restituito.

Osservazioni:

Il delegato generico descrive una funzione con un solo argomento.

Nei modelli di funzione seguenti:

unary_delegate<int, int> Fun1;

unary_delegate<int, int> Fun2;

i tipi Fun1 e Fun2 sono sinonimi, mentre per:

delegate int Fun1(int);

delegate int Fun2(int);

non sono dello stesso tipo.

Esempio

// 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)

La classe generica descrive un delegato di un argomento che restituisce void. Viene usato per specificare un delegato in termini di tipo argomento.

Sintassi

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

Parametri

Arg
Il tipo di argomento.

Osservazioni:

Il delegato generico descrive una funzione a un argomento che restituisce void.

Nei modelli di funzione seguenti:

unary_delegate_noreturn<int> Fun1;

unary_delegate_noreturn<int> Fun2;

i tipi Fun1 e Fun2 sono sinonimi, mentre per:

delegate void Fun1(int);

delegate void Fun2(int);

non sono dello stesso tipo.

Esempio

// 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)

La classe modello descrive un funtore che, quando viene chiamato, restituisce il not logico del funtore a un argomento archiviato. Viene usato per specificare un oggetto funzione in termini di funtore archiviato.

Sintassi

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^();
    };

Parametri

Fun
Tipo del funtore archiviato.

Funzioni di membro

Definizione del tipo Descrizione
argument_type Tipo dell'argomento functor.
delegate_type Tipo del delegato generico.
result_type Tipo del risultato del funtore.
Membro Descrizione
unary_negate Costruisce il funtore.
Operatore Descrizione
operator() Calcola la funzione desiderata.
delegate_type^ Esegue il cast del funtore a un delegato.

Osservazioni:

La classe modello descrive un funtore a un argomento che archivia un altro funtore a argomento. Definisce l'operatore operator() membro in modo che, quando l'oggetto viene chiamato come funzione, restituisce il NOT logico del funtore archiviato chiamato con l'argomento .

È anche possibile passare l'oggetto come argomento della funzione il cui tipo è delegate_type^ e verrà convertito in modo appropriato.

Esempio

// 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