Advertisement
Wojtekd

TPO Szablony tablica

Oct 25th, 2017
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.72 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <ctime>
  4.  
  5. template<class T>
  6. class CTablica
  7. {
  8.     private:
  9.         T* tab;    
  10.     public:
  11.         int rozmiar;
  12.  
  13.         //konstruktor
  14.         CTablica( int rozmiar );
  15.         CTablica( T* tablica, int rozmiar );
  16.         CTablica( CTablica& );
  17.        
  18.         ~CTablica() { delete[] tab; }
  19.        
  20.         void operator=(CTablica&);
  21.         T& operator[](int);            
  22.        
  23.        
  24.         friend std::ostream& operator<< (std::ostream &wyjscie, CTablica& t)
  25.         {
  26.             for(int i = 0; i < t.rozmiar; i++)
  27.             {
  28.                 wyjscie << t[i] << " ";
  29.             }
  30.             wyjscie << std::endl;
  31.             return wyjscie;
  32.         }
  33.        
  34.     private:       
  35.         void copy(CTablica& from);
  36.         T* alokuj(int rozmiar);
  37. };
  38.  
  39. template<class T>
  40. T& CTablica<T>::operator[](int index)
  41. {
  42.     return tab[index];
  43. }
  44.  
  45. template<class T>
  46. T* CTablica<T>::alokuj(int rozmiar)
  47. {
  48.     this->rozmiar = rozmiar;
  49.     T* nowa = new T[rozmiar];
  50.     return nowa;
  51. }
  52.  
  53. template<class T>
  54. CTablica<T>::CTablica(int rozmiar)
  55. {
  56.     tab = alokuj(rozmiar);
  57. }
  58.  
  59. template<class T>
  60. CTablica<T>::CTablica(T* tablica, int rozmiar)
  61. {
  62.     tab = alokuj(rozmiar);
  63.     for(int i = 0; i < rozmiar; i++)
  64.     {
  65.         tab[i] = tablica[i];
  66.     }
  67. }
  68.  
  69. template<class T>
  70. CTablica<T>::CTablica(CTablica& other)
  71. {
  72.     if(this != &other)
  73.     {
  74.         tab = alokuj(other.rozmiar);
  75.         copy(other);
  76.     }
  77. }
  78.  
  79. template<class T>
  80. void CTablica<T>::operator=(CTablica& other)
  81. {
  82.     copy(other);
  83. }
  84.  
  85. template<class T>
  86. void CTablica<T>::copy(CTablica& from)
  87. {  
  88.     for(int i = 0; i < from.rozmiar; i++)
  89.     {
  90.         tab[i] = from[i];
  91.     }
  92. }
  93.  
  94. int main()
  95. {
  96.     srand(time(NULL));
  97.     CTablica<int> tablica(10);
  98.    
  99.     for(int i = 0; i < tablica.rozmiar; i++)
  100.     {
  101.         tablica[i] = rand() % 20 + 1;
  102.     }
  103.    
  104.     CTablica<int> tablica2(tablica);
  105.    
  106.     std::cout << tablica;
  107.     std::cout << tablica2;
  108.    
  109.     return 0;
  110. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement