Zaawansowane CPP/Ćwiczenia 11: Funktory: Różnice pomiędzy wersjami
Nie podano opisu zmian |
|||
Linia 1: | Linia 1: | ||
{{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|| | |||
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|| | |||
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. | ||
}} | |||
{{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. | ||
}} | |||
{{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 .
Ć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)
.