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

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
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 .

Ć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).