Zaawansowane CPP/Ćwiczenia 8: Metaprogramowanie: Różnice pomiędzy wersjami
Nie podano opisu zmian |
Nie podano opisu zmian |
||
Linia 20: | Linia 20: | ||
}; | }; | ||
Patrz plik [ | Patrz plik [[media:Factorial.h | factorial.h]]. | ||
</div></div> | </div></div> | ||
Linia 60: | Linia 60: | ||
}; | }; | ||
Patrz plik [ | Patrz plik [[media:Pown.h | pown.h]]. | ||
</div></div> | </div></div> | ||
Linia 87: | Linia 87: | ||
template<> double pow<0>(double x) {return 1.0;}; | template<> double pow<0>(double x) {return 1.0;}; | ||
Patrz plik [ | Patrz plik [[media:Powx.h | powx.h]]. | ||
</div></div> | </div></div> | ||
Linia 122: | Linia 122: | ||
} | } | ||
Patrz plik [ | Patrz plik [[media:Inner.h | inner.h]]. | ||
</div></div> | </div></div> | ||
Linia 167: | Linia 167: | ||
}; | }; | ||
Patrz plik [ | Patrz plik [[media:Inner.h | inner.h]]. | ||
</div></div> | </div></div> | ||
Linia 213: | Linia 213: | ||
} | } | ||
Całość kodu znajduje się w pliku [ | Całość kodu znajduje się w pliku [[media:Matrix.h | matrix.h]]. | ||
</div></div> | </div></div> |
Wersja z 10:35, 2 paź 2006
Ćwiczenie 1
Napisz szablon funkcji lub klasy wyliczający funkcję silnia:
Ćwiczenie 2
Zaimplementuj szablon Pow<N,M>
obliczający
. Np.:
Pow<3,4>::val;
powinno mieć wartość 81.
Ćwiczenie 3
Wymyśl i zaimplementuj jako metaprogram szybszy algorytm funkcji pow(x)
.
Ćwiczenie 4
Napisz szablon generujący pierwsze wyrazów rozwinięcia funkcji :
Możesz skorzystać z rozwiązań wcześniejszych zadań.
Ć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.
Ć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);
Ć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 .