Witam programistów , proszę o pomoc/podpowiedź jak zacząć program podany w załączniku z Klasą Vector.
Niestety nauczycielka(ukrainka) nie wyjaśniła jak się bawić z tablicami w classie,a z poprzednimi zadaniami związanymi z przeciążeniami operatorów,class Ułamek oraz Weight nie miałem problemu.
Nie proszę o gotowe rozwiązania,lecz o podpowiedzi/jakieś przykłady jak obchodzić się z tablicami w classie.
Jak ja uwielbiam jak "nauczyciele" każą wynajdować ludziom koło na nowo...
Celem tego zadania jest stworzenie własnej implementacji std::vector, która będzie przechowywać elementy. Aby zrobić to jak należy potrzebujesz zapoznać się z :
- szablonami aby dało się dowolny typ włożyć
- przeciążanie operatorów
- podobnie owe połączone operacje, niech owa Ukrainka w swym geniuszu oświeci nas maluczkich, co ma wyjść w przypadku sumy Vector<int> + Vectorstd::string
- operator kwestowania? O Swarogu, Perunie, Trygławie i Welesie, a cóż to za licho??? Chyba, że się kobita fikła, i chodziło jej o konwersję do std::stringa - ale tutaj znów musi jasno określić, dla jakich danych wejściowych jaki ma być efekt wyjściowy. Wstępnie obstawam coś takiego:
Vector<int> w{1, 2, 3, 4, 5};
std::string s = w.toString();//s = "1, 2, 3, 4"
Trochę jaśniej.
Ale jak zadeklarować w pliku nagłówkowym składową zawierającą tablicę dla classy vector statycznie by to się kupy trzymało.
Musisz nauczyć się szablonów. Poniżej takie absolutnie minimalne minimum będące zalążkiem twojego wektora:
template<typename T>
class Vector
{
public:
Vector<T>() = default;
virtual ~Vector() = default;
protected:
T *table = nullptr;
};
https://onlinegdb.com/Sy2y0zotE
Pierwszym twoim zadaniem Bracie będzie dopisanie inicjalizacji tej wewnętrznej tablicy na jakieś rozmiary:
- domyślny
- podany przez użytkownika
Następnym to zadbanie o zwalnianie zasobów kiedy obiekt tej klasy Vector przestaje istnieć. Kolejnym zadbanie o to, żeby dało się w razie potrzeby zmieniać rozmiar tablicy.
Ponadto będzie cię czekać obsługa zmiany rozmiaru, oraz zwalnianie pamięci