class Set { public: Set() {} Set(const std::vector& vector) : myset(vector) {} Set Union(const Set& b) const { std::vector c = myset; for (int i = 0; i < b.myset.size(); i++) { if (std::find(c.begin(), c.end(), b.myset[i]) == c.end()) c.push_back(b.myset[i]); } return Set(c); } Set Intersection(const Set& b) const { std::vector c; for (int i = 0; i < myset.size(); i++) { for (int j = 0; j < b.myset.size(); j++) { if (myset[i] == b.myset[j]) { c.push_back(b.myset[j]); } } } return Set(c); } Set Difference(const Set& b) const { std::vector c = myset; for (int i = 0; i < b.myset.size(); i++) { auto it = std::find(c.begin(), c.end(), b.myset[i]); if (it != c.end()) c.erase(it); } return Set(c); } Set SymmetricDifference(const Set& b) const { std::vector c = this->Union(b).myset; std::vector c_ = this->Intersection(b).myset; for (int i = 0; i < c_.size(); i++) { auto it = std::remove(c.begin(), c.end(), c_[i]); c.erase(it); } return Set(c); } void Add(int64_t num) { myset.push_back(num); } void Remove(int64_t num) { auto it = std::remove(myset.begin(), myset.end(), num); myset.erase(it); } bool Contains(int64_t num) const { if (std::find(myset.begin(), myset.end(), num) == myset.end()) return false; else return true; } std::vector Data() const { return myset; } private: std::vector myset; };