Edytuj stronę Odnośniki Fold/unfold all ODT export Ta strona jest tylko do odczytu. Możesz wyświetlić źródła tej strony ale nie możesz ich zmienić. ====== Szablony ====== **Szablon funkcji** <code c++> template <class Typek> T& pewna_funkcja(Typek x) { return x; } </code> **Szablon klasy** <code c++> template <class Typek> class Klasa { Typek *x; void Metoda(); } </code> **Szablon funkcji składowej (metody)** <code c++> template <class Typek> void Klasa<Typek>::Metoda() { } </code> ===== Wzorzec klasy Wektor ===== Zaimplementuj szablon klasy ''Wektor'', który w dynamicznie przydzielonej tablicy o określonym rozmiarze, przechowuje elementy dowolnego typu. Klasa ta powinna implementować następujące metody: * konstruktor domyślny, inicjuje Wektor o pojemności 20 elementów. * konstruktor ''**Wektor(int rozmiar)**'' inicjuje wektor o podanej pojemności * operator ''**[]**'' pozwalający odwołać się do konkretnego elementu wektora * ''**IleElementow**'' zwraca ilość elementów (nie pojemność wektora) * ''**Rozmiar**'' podaje pojemność wektora * ''**Dodaj**'' umieszcza element na końcu wektora (jeśli pojemność wektora jest za mała należy ją zwiększyć, np. dwukrotnie). * ''**Usun**'' usuwa ostatni element wektora. * ''**Wyczysc**'' usuwa wszystkie elementy z wektora * destruktor Przykładowy kod testujący klasę: <code c++> Wektor<int> liczby; for(int i=0;i<100;i++) liczby.Dodaj(i); cout << "Rozmiar " << liczby.Rozmiar() << " elementow " << liczby.IleElementow() << endl; Wektor<Kwadrat> wektor_kwadratow; for(int i=0;i<100;i++) { Kwadrat k(liczby[i]); wektor_kwadratow.Dodaj(k); } cout << "Pole kwadratu o boku " << liczby[5] << " wynosi " << wektor_kwadratow[5].Pole() << endl; </code> **Zadania dodatkowe**\\ Dodaj do klasy Wektor: * konstruktor kopiujący * przeciążoną metodę ''**Dodaj**'' pozwalającą dodać element na określonej pozycji. * przeciążoną ''**Usun**'' usuwającą element z wybranej pozycji.