Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // tablica.hpp
- #include <iostream>
- using namespace std;
- template <class T>
- class Tablica
- {
- //friend ostream& operator<<(ostream& os, const Tablica<T>& dat);
- T* dane;
- unsigned rozmiar;
- public:
- Tablica();
- ~Tablica();
- T& operator[](size_t nr)
- {
- return dane[nr];
- }
- const T& operator[](size_t nr) const
- {
- return dane[nr];
- }
- void dodaj_element(T);
- T get_element(unsigned);
- bool set_element(unsigned, T);
- void clear();
- void sortuj();
- void wypisz();
- };
- template <class T>
- Tablica<T>::Tablica() : dane(nullptr), rozmiar(0) {}
- template <class T>
- Tablica<T>::~Tablica()
- {
- delete[] dane;
- cout << "Destruktor zakonczyl prace\n";
- }
- template <class T>
- void Tablica<T>::dodaj_element(T nowa)
- {
- /*
- 1. utworzenie nowej tablicy tymaczowej (temp) o dotychczasowym rozmiarze
- 2. przekopiowanie danych z dotychczasowej tablicy do temp
- 3. zwolnienie pamięci z tablicy dotychczasowej
- 4. stworzenie nowej tablicy na miejsce wskaźnika dane, o rozmiarze o 1 większym
- 5. przekopiowanie danych z tablicy temp do tablicy dane
- 6. zwolnienie pamięci ze wskaźnika temp
- 7. dopisanie nowego elementu do tablicy
- 8. zwiększenie rozmiaru o 1
- */
- // 1
- T* temp = new T[rozmiar];
- // 2
- for(unsigned i = 0; i < rozmiar; ++i)
- temp[i] = dane[i];
- // 3
- delete[] dane;
- // 4
- dane = new T[rozmiar + 1];
- // 5
- for(unsigned i = 0; i < rozmiar; ++i)
- dane[i] = temp[i];
- // 6
- delete[] temp;
- // 7
- dane[rozmiar] = nowa;
- // 8
- ++rozmiar;
- }
- template <class T>
- T Tablica<T>::get_element(unsigned nr)
- {
- return dane[nr];
- }
- template <class T>
- bool Tablica<T>::set_element(unsigned nr, T wartosc)
- {
- if(nr < rozmiar)
- {
- dane[nr] = wartosc;
- return true;
- }
- return false;
- }
- template <class T>
- void Tablica<T>::clear()
- {
- delete[] dane;
- rozmiar = 0;
- }
- /*template <class T>
- ostream& operator<<(ostream& os, const Tablica<T>& obiekt)
- {
- os << "Rozmiar tablicy: " << obiekt.rozmiar << endl;
- os << "Dane: ";
- for(unsigned i = 0; i < obiekt.rozmiar; ++i)
- os << obiekt.dane[i] << '\t';
- os << endl;
- os << "Adres pierwszej komorki tablicy: " << obiekt.dane;
- return os;
- }*/
- template <class T>
- void Tablica<T>::wypisz()
- {
- cout << "Rozmiar tablicy: " << rozmiar << endl;
- cout << "Dane: ";
- for(unsigned i = 0; i < rozmiar; ++i)
- cout << dane[i] << '\t';
- cout << endl;
- cout << "Adres pierwszej komorki tablicy: " << dane;
- cout << endl;
- }
- template <class T>
- void Tablica<T>::sortuj()
- {
- for(unsigned i = 0; i < rozmiar; ++i)
- for(unsigned j = 0; j < rozmiar - 1 - i; ++j)
- if(dane[j] > dane[j + 1])
- swap(dane[j], dane[j + 1]);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement