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