====== Szablony ====== **Szablon funkcji** template T& pewna_funkcja(Typek x) { return x; } **Szablon klasy** template class Klasa { Typek *x; void Metoda(); } **Szablon funkcji składowej (metody)** template void Klasa::Metoda() { } ===== 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ę: Wektor liczby; for(int i=0;i<100;i++) liczby.Dodaj(i); cout << "Rozmiar " << liczby.Rozmiar() << " elementow " << liczby.IleElementow() << endl; Wektor 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; **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.