Advertisement
developer10

dfdssdfs

Jun 26th, 2016
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include<iostream>
  2. #include<string>
  3.  
  4. using namespace std;
  5.  
  6.  
  7. template<class T1, class T2, int max>
  8. class Kolekcija
  9. {
  10.     T1* _elementi1[max];
  11.     T2* _elementi2[max];
  12.     int* _trenutno;
  13.  
  14. public:
  15.     Kolekcija()
  16.     {
  17.         for (int i = 0; i < max; i++)
  18.         {
  19.             _elementi1[i] = nullptr;
  20.             _elementi2[i] = nullptr;
  21.         }
  22.  
  23.         _trenutno = new int(0);
  24.     }
  25.  
  26.     ~Kolekcija()
  27.     {
  28.         for (int i = 0; i < *_trenutno; i++)
  29.         {
  30.             delete _elementi1[i]; _elementi1[i] = nullptr;
  31.             delete _elementi2[i]; _elementi2[i] = nullptr;
  32.         }
  33.  
  34.         delete _trenutno; _trenutno = nullptr;
  35.     }
  36.  
  37.     Kolekcija(const Kolekcija<T1, T2, max>& obj) :Kolekcija()
  38.     {
  39.         for (int i = 0; i < *obj._trenutno; i++)
  40.             this->AddElement(*obj._elementi1[i], *obj._elementi2[i]);
  41.     }
  42.  
  43.  
  44.     Kolekcija& operator=(const Kolekcija<T1, T2, max>& obj)
  45.     {
  46.         if (this != &obj)
  47.         {
  48.             *_trenutno = *obj._trenutno;
  49.  
  50.             for (int i = 0; i < *obj._trenutno; i++)
  51.             {
  52.                 *_elementi1[i] = *obj._elementi1[i];
  53.                 *_elementi2[i] = *obj._elementi2[i];
  54.             }
  55.            
  56.         }
  57.         return *this;
  58.     }
  59.  
  60.  
  61.     bool AddElement(const T1& e1, const T2& e2)
  62.     {
  63.         for (int i = 0; i < *_trenutno; i++)
  64.         {
  65.             if (*_elementi1[i] == e1 && *_elementi2[i] == e2)
  66.                 return false;
  67.         }
  68.  
  69.         _elementi1[*_trenutno] = new T1(e1);
  70.         _elementi2[*_trenutno] = new T2(e2);
  71.  
  72.         (*_trenutno)++;
  73.  
  74.         return true;
  75.     }
  76.  
  77.  
  78.     bool RemoveElement(const T2& e2)
  79.     {
  80.         for (int i = 0; i < *_trenutno; i++)
  81.         {
  82.             if (*_elementi2[i] == e2)
  83.             {
  84.                 for (int j = i; j < *_trenutno - 1; j++)
  85.                 {
  86.                     *_elementi1[j] = *_elementi1[j + 1];
  87.                     *_elementi2[j] = *_elementi2[j + 1];
  88.                 }
  89.  
  90.                 (*_trenutno)--;
  91.  
  92.                 delete _elementi1[*_trenutno];
  93.                 _elementi1[*_trenutno] = nullptr;
  94.  
  95.                 delete _elementi2[*_trenutno];
  96.                 _elementi2[*_trenutno] = nullptr;
  97.  
  98.                 return true;
  99.             }
  100.         }
  101.  
  102.         return false;
  103.     }
  104.  
  105.  
  106.     friend ostream& operator<< <>(ostream&, const Kolekcija<T1, T2, max>&);
  107.  
  108.     int GetTrenutno()const { return *_trenutno; }
  109.     T1& GetElement1(int indeks)const { return *_elementi1[indeks]; }
  110.     T2& GetElement2(int indeks)const { return *_elementi2[indeks]; }
  111. };
  112.  
  113. template<class T1, class T2, int max>
  114. ostream& operator<< <>(ostream& COUT, const Kolekcija<T1, T2, max>& obj)
  115. {
  116.     for (int i = 0; i < obj.GetTrenutno(); i++)
  117.     {
  118.         COUT << obj.GetElement1(i) << " :: " << obj.GetElement2(i) << endl;
  119.     }
  120.  
  121.     return COUT;
  122. }
  123.  
  124.  
  125. void main()
  126. {
  127.     Kolekcija<int, double, 6> kolekcija1;
  128.  
  129.     for (int i = 0; i < 6; i++)
  130.         kolekcija1.AddElement(i, i + 0.4);
  131.  
  132.     //kolekcija1.RemoveElement(3.4);
  133.  
  134.     cout << kolekcija1 << endl;
  135.  
  136.     Kolekcija<int, double, 6> kolekcija2 = kolekcija1;
  137.  
  138.     //kolekcija2.RemoveElement(3.4);
  139.  
  140.     cout << kolekcija2 << endl;
  141.  
  142.     Kolekcija<int, double, 6> kolekcija3;
  143.     kolekcija3 = kolekcija2;
  144.  
  145.     cout << kolekcija3 << endl;
  146.  
  147. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement