Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #ifndef WEKTOR_H
- #define WEKTOR_H
- template <class T>
- class Wektor
- {
- public:
- Wektor(); // konstruktor domyślny tworzący pusty wektor
- explicit Wektor(unsigned r); // konstruktor tworzący wektor o podanym rozmiarze
- ~Wektor(); // destruktor
- void dodaj_element(T nowy); // dodawanie nowego elementu na koniec wektora
- usun_element(unsigned nr); // usuwanie wybranego elementu
- T& operator[](unsigned nr) {return tablica[nr];} // dostęp do wybranego elementu
- void dodaj_wektor(Wektor<T> dodawany);
- private:
- T* tablica;
- unsigned rozmiar;
- };
- Template <class T>
- Wektor<T>::Wektor() : rozmiar(0), tablica(nullptr) {}
- Template <class T>
- Wektor<T>::Wektor(unsigned r) : rozmiar(r), tablica(new T[r]) {}
- Template <class T>
- Wektor<T>::~Wektor()
- {
- if(tablica != nullptr)
- delete[] tablica; // zwolnienie pamięci
- }
- Template <class T>
- void Wektor<T>::dodaj_element(T nowy)
- {
- // pusty wektor:
- if(tablica == nullptr)
- {
- tablica = new T[1];
- tablica[0] = nowy;
- rozmiar = 1;
- return;
- }
- // niepusty wektor
- // 1. utworzenie tablicy tymczasowej o dotychczasowym rozmiarze
- T* temp = new T[rozmiar];
- // 2. skopiowanie dotychczasowej tablicy do tymczasowej
- for(unsigned i = 0; i < rozmiar; ++i)
- temp[i] = tablica[i];
- // 3. zwolnienie pamięci z tablicy dotychczasowej
- delete[] tablica;
- // 4. utworzenie nowej tablicy o rozmiarze +1
- tablica = new T[rozmiar + 1];
- // 5. skopiowanie tablicy tymczasowej do nowej
- for(unsigned i = 0; i < rozmiar; ++i)
- tablica[i] = temp[i];
- // 6. zwolnienie pamięci z tablicy tymczasowej
- delete[] temp;
- // 7. dodanie nowego elementu na koniec tablicy
- tablica[rozmiar] = nowy;
- // 8. zwiększenie rozmiaru o 1
- ++rozmiar;
- }
- Template <class T>
- void Wektor<T>::usun_element(unsigned nr)
- {
- if(nr >= rozmiar)
- {
- // dodanie wyjątku
- }
- else
- {
- // 1. stworzenie tablicy tymczasowej o rozmiarze -1
- T* temp = new T[rozmiar - 1];
- // 2. skopiowanie zawartości do tablicy tymczasowej z pominięciem elementu nr
- unsigned j = 0;
- for(unsigned i = 0; i < rozmiar; ++i)
- {
- if(i == nr)
- continue; // przejście do następnego kroku pętli
- temp[j] = tablica[i];
- ++j;
- }
- // 3. zwolnienie pamięci z tablicy dotychczasowej
- delete[] tablica;
- // 4. zmiana rozmiaru na (rozmiar - 1)
- --rozmiar;
- // 5. utworzenie nowej tablicy o nowym rozmiarze
- tablica = new T[rozmiar];
- // 6. skopiowanie tablicy temp do nowej
- for(unsigned i = 0; i < rozmiar; ++i)
- tablica[i] = temp[i];
- // 7. zwolnienie pamięci z tablicy temp
- delete[] temp;
- }
- }
- #endif // WEKTOR_H
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement