Zaawansowane CPP/Ćwiczenia 8: Metaprogramowanie

Z Studia Informatyczne
< Zaawansowane CPP
Wersja z dnia 12:42, 9 cze 2020 autorstwa Luki (dyskusja | edycje) (Zastępowanie tekstu - "\aligned" na "\begin{align}")
Przejdź do nawigacjiPrzejdź do wyszukiwania

Ćwiczenie 1

Napisz szablon funkcji lub klasy wyliczający funkcję silnia:

Rozwiązanie

Ćwiczenie 2

Zaimplementuj szablon Pow<N,M> obliczający . Np.:

Pow<3,4>::val;

powinno mieć wartość 81.

Rozwiązanie

Ćwiczenie 3

Wymyśl i zaimplementuj jako metaprogram szybszy algorytm funkcji pow(x).

Podpowiedź
Rozwiązanie

Ćwiczenie 4

Napisz szablon generujący pierwsze wyrazów rozwinięcia funkcji :

N

Możesz skorzystać z rozwiązań wcześniejszych zadań.

Rozwiązanie

Ćwiczenie 5

Napisz szablon generujący funkcję implementującą iloczyn skalarny dwu wektorów:

template<size_t N> double inner(double *x, double *y);

Parametrem szablonu ma być dlugość mnożonych wektorów.

<N>

Ćwiczenie 6

Rozszerz powyższy szablon tak, aby również typ elementów wektora był parametrem szablonu:

template<size_t N, typename T> T dot(T *x, T *y);
Podpowiedź
Rozwiązanie

Ćwiczenie 7

Napisz szablon generujący funkcję implementującą iloczyn macierzy i wektora o elementach:

 void matrix_v<N>(double *A,double *v,double *u)

Tablica jest reprezentowana w pamięci zgodnie z konwencją , tzn. wiersz po wierszu: elementowi odpowiada .

Rozwiązanie