Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<string>
- using namespace std;
- template<class T1, class T2, int max>
- class Kolekcija
- {
- T1* _elementi1[max];
- T2* _elementi2[max];
- int* _trenutno;
- public:
- Kolekcija()
- {
- for (int i = 0; i < max; i++)
- {
- _elementi1[i] = nullptr;
- _elementi2[i] = nullptr;
- }
- _trenutno = new int(0);
- }
- ~Kolekcija()
- {
- for (int i = 0; i < *_trenutno; i++)
- {
- delete _elementi1[i]; _elementi1[i] = nullptr;
- delete _elementi2[i]; _elementi2[i] = nullptr;
- }
- delete _trenutno; _trenutno = nullptr;
- }
- Kolekcija(const Kolekcija<T1, T2, max>& obj) :Kolekcija()
- {
- for (int i = 0; i < *obj._trenutno; i++)
- this->AddElement(*obj._elementi1[i], *obj._elementi2[i]);
- }
- Kolekcija& operator=(const Kolekcija<T1, T2, max>& obj)
- {
- if (this != &obj)
- {
- *_trenutno = *obj._trenutno;
- for (int i = 0; i < *obj._trenutno; i++)
- {
- *_elementi1[i] = *obj._elementi1[i];
- *_elementi2[i] = *obj._elementi2[i];
- }
- }
- return *this;
- }
- bool AddElement(const T1& e1, const T2& e2)
- {
- for (int i = 0; i < *_trenutno; i++)
- {
- if (*_elementi1[i] == e1 && *_elementi2[i] == e2)
- return false;
- }
- _elementi1[*_trenutno] = new T1(e1);
- _elementi2[*_trenutno] = new T2(e2);
- (*_trenutno)++;
- return true;
- }
- bool RemoveElement(const T2& e2)
- {
- for (int i = 0; i < *_trenutno; i++)
- {
- if (*_elementi2[i] == e2)
- {
- for (int j = i; j < *_trenutno - 1; j++)
- {
- *_elementi1[j] = *_elementi1[j + 1];
- *_elementi2[j] = *_elementi2[j + 1];
- }
- (*_trenutno)--;
- delete _elementi1[*_trenutno];
- _elementi1[*_trenutno] = nullptr;
- delete _elementi2[*_trenutno];
- _elementi2[*_trenutno] = nullptr;
- return true;
- }
- }
- return false;
- }
- friend ostream& operator<< <>(ostream&, const Kolekcija<T1, T2, max>&);
- int GetTrenutno()const { return *_trenutno; }
- T1& GetElement1(int indeks)const { return *_elementi1[indeks]; }
- T2& GetElement2(int indeks)const { return *_elementi2[indeks]; }
- };
- template<class T1, class T2, int max>
- ostream& operator<< <>(ostream& COUT, const Kolekcija<T1, T2, max>& obj)
- {
- for (int i = 0; i < obj.GetTrenutno(); i++)
- {
- COUT << obj.GetElement1(i) << " :: " << obj.GetElement2(i) << endl;
- }
- return COUT;
- }
- void main()
- {
- Kolekcija<int, double, 6> kolekcija1;
- for (int i = 0; i < 6; i++)
- kolekcija1.AddElement(i, i + 0.4);
- //kolekcija1.RemoveElement(3.4);
- cout << kolekcija1 << endl;
- Kolekcija<int, double, 6> kolekcija2 = kolekcija1;
- //kolekcija2.RemoveElement(3.4);
- cout << kolekcija2 << endl;
- Kolekcija<int, double, 6> kolekcija3;
- kolekcija3 = kolekcija2;
- cout << kolekcija3 << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement