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

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Linia 1: Linia 1:
''Uwaga: przekonwertowane latex2mediawiki; prawdopodobnie trzeba wprowadzi� poprawki''
 
 
{Używanie funktorów}
 
 
 
'''Zadanie 1 '''  
 
'''Zadanie 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.
  
 
  <nowiki>template<typename InputIterator1,
 
  <nowiki>template<typename InputIterator1,
Linia 15: Linia 11:
 
</nowiki>
 
</nowiki>
  
Algorytm ma działać tak jak standardowy <code><nowiki> for_each</nowiki></code>, tyle że funkcja
+
Algorytm ma działać tak jak standardowy <code><nowiki>for_each</nowiki></code>, tyle że funkcja
<code><nowiki> op</nowiki></code> ma być stosowana do par elementów:
+
<code><nowiki>op</nowiki></code> ma być stosowana do par elementów:
  
 
  <nowiki>op(*first1,*first2);
 
  <nowiki>op(*first1,*first2);
 
op(*(first1+1),*(first2+1);
 
op(*(first1+1),*(first2+1);
...
+
...</nowiki>
</nowiki>
 
  
 
'''Zadanie 2 '''  Zaimplementuj opisany na wykładzie adapter który
 
'''Zadanie 2 '''  Zaimplementuj opisany na wykładzie adapter który

Wersja z 09:36, 3 wrz 2006

Zadanie 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);
...

Zadanie 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.

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