Zaawansowane CPP/Ćwiczenia 12: Używanie funktorów: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Nie podano opisu zmian
Nie podano opisu zmian
Linia 1: Linia 1:
'''Zadanie 1 '''
{{cwiczenie|1||
 
Napisz algorytm <code><nowiki>for_each</nowiki></code> który działałby na dwu zakresach.
Napisz algorytm <code><nowiki>for_each</nowiki></code> który działałby na dwu zakresach.


Linia 17: Linia 18:
op(*(first1+1),*(first2+1);
op(*(first1+1),*(first2+1);
...</nowiki>
...</nowiki>
}}
{{cwiczenie|2||


'''Zadanie 2 '''  Zaimplementuj opisany na wykładzie adapter który
Zaimplementuj opisany na wykładzie adapter który
opakowywuje funkcję lub funktor, ignorując zwracaną przez nie wartość
opakowywuje funkcję lub funktor, ignorując zwracaną przez nie wartość
i zwracający zamiast jakąś wartość wybranego typu. Napisać wersje dla
i zwracający zamiast jakąś wartość wybranego typu. Napisać wersje dla
funkcji jedno i dwu argumentowych.  Do niego napisz iterator, który
funkcji jedno i dwu argumentowych.  Do niego napisz iterator, który
nic nie robi, ignorując przypisywane do niego elementy.  
nic nie robi, ignorując przypisywane do niego elementy.  
}}
{{cwiczenie|3||


'''Zadanie 3 '''
Zaimplementuj opisany w wykładzie iterator, który działa podaną funkcja na
Zaimplementuj opisany w wykładzie iterator, który działa podaną funkcja na
przypisywane obiekty.
przypisywane obiekty.
}}

Wersja z 19:12, 10 wrz 2006

Ćwiczenie 1

Napisz algorytm for_each który działałby na dwu zakresach.

template<typename InputIterator1,
         typename InputIterator2,
         typename BinaryFunction op> 
BinaryFunction for_each(InputIterator1 first1,
                        InputIterator1 last1,
                        InputIterator2 first2,
                        BinaryFunction op);

Algorytm ma działać tak jak standardowy for_each, tyle że funkcja op ma być stosowana do par elementów:

op(*first1,*first2);
op(*(first1+1),*(first2+1);
...

Ćwiczenie 2

Zaimplementuj opisany na wykładzie adapter który opakowywuje funkcję lub funktor, ignorując zwracaną przez nie wartość i zwracający zamiast jakąś wartość wybranego typu. Napisać wersje dla funkcji jedno i dwu argumentowych. Do niego napisz iterator, który nic nie robi, ignorując przypisywane do niego elementy.

Ćwiczenie 3

Zaimplementuj opisany w wykładzie iterator, który działa podaną funkcja na przypisywane obiekty.