#include "Set.h" template bool Set::isEmpty( ) const { return getSize( ) == 0; } template int Set::getSize( ) const { return items.size( ); } template void Set::print( ostream & out ) const { if( isEmpty( ) ) out << "Empty set"; else { out << "{ " << items[ 0 ]; for( int i = 1; i < items.size( ); i++ ) out << ", " << items[ i ]; out << " }"; } } template int Set::findPos( const Object & x ) const { for( int i = 0; i < items.size( ); i++ ) if( items[ i ] == x ) return i; return NOT_FOUND; } template bool Set::contains( const Object & x ) const { return findPos( x ) != NOT_FOUND; } template void Set::insert( const Object & x ) { if( !contains( x ) ) items.push_back( x ); } template void Set::remove( const Object & x ) { int loc = findPos( x ); if( loc != NOT_FOUND ) { items[ loc ] = items.back( ); items.pop_back( ); } } template void Set::makeEmpty( ) { items.resize( 0 ); } template Set Set::setUnion( const Set & rhs ) const { Set result = *this; for( int i = 0; i < rhs.items.size( ); i++ ) result.insert( rhs.items[ i ] ); return result; } template Set Set::intersect( const Set & rhs ) const { Set result; for( int i = 0; i < items.size( ); i++ ) if( rhs.contains( items[ i ] ) ) result.insert( items[ i ] ); return result; }