Zaawansowane CPP/Ćwiczenia 11: Funktory: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Rogoda (dyskusja | edycje)
Rogoda (dyskusja | edycje)
Nie podano opisu zmian
Linia 1: Linia 1:
'''Zadanie 1 '''  Zaimplementuj adapter <code><nowiki>compose_f_gx_hy</nowiki></code>
{{cwiczenie|1||
 
Zaimplementuj adapter <code><nowiki>compose_f_gx_hy</nowiki></code>
realizujący złożenie dwuargumentowe <math>\displaystyle f(g(x),h(y))</math>.
realizujący złożenie dwuargumentowe <math>\displaystyle f(g(x),h(y))</math>.
}}
{{cwiczenie|2||


'''Zadanie 2 '''  Korzystając z klasy <code><nowiki>functor_traits</nowiki></code>
Korzystając z klasy <code><nowiki>functor_traits</nowiki></code>
zaimplementuj adpter <code><nowiki>bind1st</nowiki></code> który bedzie działał zarówno dla
zaimplementuj adpter <code><nowiki>bind1st</nowiki></code> który bedzie działał zarówno dla
jedno i dwuargumentowych funktorów.
jedno i dwuargumentowych funktorów.
}}
{{cwiczenie|3||


'''Zadanie 3 '''  Rozszerz powyższy adapter tak, aby
Rozszerz powyższy adapter tak, aby
działa  również dla jedno lub dwuargumentowych funkcji bez konieczności ich opakowywania.
działa  również dla jedno lub dwuargumentowych funkcji bez konieczności ich opakowywania.
 
}}
'''Zadanie 4 '''
{{cwiczenie|4||


Zaimplementuj funktor impelemetujący, składanie funkcji poprzez
Zaimplementuj funktor impelemetujący, składanie funkcji poprzez
Linia 19: Linia 25:
ignorowane.  Podobnie dla funkcji <code><nowiki>macro2(f1,f2)</nowiki></code>, która ma zwrócić
ignorowane.  Podobnie dla funkcji <code><nowiki>macro2(f1,f2)</nowiki></code>, która ma zwrócić
funktor dwuargumentowy.
funktor dwuargumentowy.
 
}}
'''Zadanie 5 '''  
{{cwiczenie|5||  


Zmodyfikuj powyższy szablon tak aby mogły być do niego przekazywane również funkcje bezargumentowe:
Zmodyfikuj powyższy szablon tak aby mogły być do niego przekazywane również funkcje bezargumentowe:
Linia 30: Linia 36:


spowdoduje wywołanie, <code><nowiki>f();g(x)</nowiki></code>.
spowdoduje wywołanie, <code><nowiki>f();g(x)</nowiki></code>.
}}

Wersja z 19:11, 10 wrz 2006

Ćwiczenie 1

Zaimplementuj adapter compose_f_gx_hy realizujący złożenie dwuargumentowe f(g(x),h(y)).

Ćwiczenie 2

Korzystając z klasy functor_traits zaimplementuj adpter bind1st który bedzie działał zarówno dla jedno i dwuargumentowych funktorów.

Ćwiczenie 3

Rozszerz powyższy adapter tak, aby działa również dla jedno lub dwuargumentowych funkcji bez konieczności ich opakowywania.

Ćwiczenie 4

Zaimplementuj funktor impelemetujący, składanie funkcji poprzez wykonywanie ich po kolei:

 macro1(f1,f2)(x)

wykonuje f1(x);f2(x);. Wartości zwracane przez te funkcje są ignorowane. Podobnie dla funkcji macro2(f1,f2), która ma zwrócić funktor dwuargumentowy.

Ćwiczenie 5

Zmodyfikuj powyższy szablon tak aby mogły być do niego przekazywane również funkcje bezargumentowe:

 int f();
void g(double);

macro1(f,g)(x);

spowdoduje wywołanie, f();g(x).