Set<ElemType> *Set<ElemType>::Union(Set *otherSet) { Iterator<ElemType> *iterator; Set *result; result = new Set<ElemType>(cmp); iterator = CreateIterator(); while (iterator->HasNext()) { result->AddElement(iterator->Next()); } delete iterator; iterator = otherSet->CreateIterator(); while (iterator->HasNext()) { result->AddElement(iterator->Next()); } delete iterator; return (result); }
Set<ElemType> *Set<ElemType>::Intersection(Set *otherSet) { Iterator<ElemType> *iterator; Set *result; result = new Set<ElemType>(cmp); iterator = CreateIterator(); while (iterator->HasNext()) { ElemType elem = iterator->Next(); if (otherSet->Contains(elem)) result->AddElement(elem); } delete iterator; return (result); }