vector
-东兴- 2014-04-30 11:04:48 .h
#include <vector>
using namespace std;
class IntegerSet
{
public:
static const int size=101;
IntegerSet ( ) ;
IntegerSet ( int ) ;
IntegerSet ( int a[] , int ) ;
IntegerSet ( IntegerSet& );
IntegerSet unionOfSet ( IntegerSet& ) ;
IntegerSet intersection ( IntegerSet& ) ;
void insertElement( int ) ;
void deleteElement( int ) ;
void printSet( ) ;
bool isEqualTo( IntegerSet & ) ;
private:
vector< bool > store ;
bool judge( int key )
{
return ( key>=0 && key<size );
}
int theTrueNum( IntegerSet& integerSet5 )
{
int count=0;
for(int i=0 ; i<size ; i++ )
{
if( store[i] )
{
count++;
}
}
return count;
}
};
.cpp
#include <iostream>
#include "IntegerSet.h"
using namespace std;
IntegerSet::IntegerSet()
{
int i;
for( i=0 ; i<size ; i++ )
{
store[i]=false;
}
}
IntegerSet::IntegerSet(int a[] , int num)
{
int i ;
for( i=0 ; i<size ; i++ )
{
store[i]=false;
}
for( ; i<num ; i++)
{
if(a[i]>=0 && a[i]<size)
{
store[ ( a[i] ) ]=1;
}
}
}
IntegerSet::IntegerSet(int a)
{
int i;
int set;
for( i=0 ; i<size ; i++ )
{
store[i]=false;
}
while( cin>>set )
{
if( judge( set ) )
{
store[ set ]=1;
}
};
}
IntegerSet::IntegerSet(IntegerSet& integerSet6 )
{
int i=0;
for( ; i<size && integerSet6.store[ i ]; i++ )
{
store[ i ]=integerSet6.store[ i ];
}
}
IntegerSet IntegerSet::unionOfSet( IntegerSet& integerSet0 )
{
IntegerSet integerSet1;
for(int i=0 ; i<size ; i++ )
{
if(this->store[ i ] || integerSet0.store[ i ])
{
integerSet1.store[i]=1;
}
}
return integerSet1;
}
IntegerSet IntegerSet::intersection(IntegerSet& integerSet2)
{
IntegerSet integerSet3;
int i=0;
for( ; i<size ; i++)
{
if( store[ i ] && integerSet2.store[ i ] )
{
integerSet3.store[ i ]=1;
}
}
return integerSet3;
}
void IntegerSet::insertElement( int key)
{
if(judge(key) && !store[ key ])
{
store[ key ]=1;
}
}
void IntegerSet::deleteElement( int junk)
{
if(judge(junk) && store[ junk ])
{
store[ junk ]=0;
}
}
bool IntegerSet::isEqualTo( IntegerSet& integerSet4 )
{
if( theTrueNum(*this) == theTrueNum(integerSet4) )
{
for( int i=0 ; i<size; i++ )
{
if( store[ i ] != integerSet4.store[ i ] );
return false;
}
return true;
}
return false;
}
void IntegerSet::printSet()
{
int i=0;
while( i<size && store[ i ] )
{
cout<<i;
i++;
};
}
.cpp
#include <iostream>
#include "IntegerSet.h"
using namespace std;
int main()
{
int size;
cin>>size;
int* temp=new int[size];
if(temp!=NULL)
{
int i=0 ;
for( ; i<size ; i++)
{
cin>>temp[i];
}
}
IntegerSet IS1;
IS1.printSet();
IntegerSet IS2( size );
IS1.printSet();
IntegerSet IS3(temp , size );
IS1.printSet();
IntegerSet IS4(IS2.unionOfSet( IS3 ) );
IS1.printSet();
IntegerSet IS5(IS2.intersection( IS3 ) );
IS1.printSet();
IS1.insertElement(4);
IS1.printSet();
IS1.deleteElement(4);
IS1.printSet();
}