#ifndef SET_H_#define SET_H_typedef class pair pair;typedef class iterator iterator;#define MAX 50class set{ private: int n; pair* el; public: set(); //constructor int addElem(pair e); //adds the specified pair to this set int delElem(pair e); //removes the specified pair from this set int belongs(pair e); // returns true if this set contains the e pair. int length(); //returns the number of pairs in this set int isEmpty(); //returns true if this set contains no pairs. pair getElem(int i); //returns the i-th pair iterator* setIterator(); //returns an iterator over the pairs in this set. ~set(); //destructor};class iterator{ private: set* s; int current; //current refers the current pair public: iterator(set* sc); //constructor ~iterator(); //destructor pair getElem(); //returns the current pair int hasNext(); //returns true if the iteration has more pairs. void next(); // moves the current to the next pair void setToFirst(); // first pair is current};class pair{ private: int anum1; int anum2; public: pair(); pair(int num1, int num2); ~pair(); int getNum1(); int getNum2();};#endif /*SET_H_*/