#define __VECTOR_H
enum Bool { false, true };
template <class T>
class Vector
//turbo-array
{ private:
//PRIVATE gedeelte
unsigned int Count;
//aantal elementen in de vector
unsigned int Max;
//max aantal elementen in de vector
T** Element;
//Dynamische array waarin alles van het type opgeslagen wordt
public:
//PUBLIC gedeelte
Vector( unsigned int max = 32767 )
//constructor
{ Max = max;
Count = 0;
}
~Vector()
{ delete[] Element;
}
Bool addElement( T object )
//element toevoegen
{ if( Count < Max )
//kijken als het object er nog bij kan
{ const int Maximum = Max;
Element[Count] = new T[Maximum];
//object maken en adres opslaan
if( Element[Count] )
//kijken als het object gemaakt is
{ Element[Count] = &object;
//element instanti‰ren met object
Count++;
//aantal vermeerderen
}
else
{ return false;
//fout raporteren
}
}
else
{ return false;
//fout raporteren
}
return true;
}
Bool removeElement( int index )
//het element in de opgegeven index verwijderen
{ if( index < Count )
//controleren als het te verwijderen object bestaat
{ for( int i = index; i < Count-1; i++ )
{ Element[i] = Element[i+1];
//elementen opschuiven
}
Count--;
//aantal elementen verminderen
delete Element[Count];
//geheugen vrijgeven
}
else
{ return false;
}
return true;
}
void removeAllElements()
//alle elementen verwijderen
{ delete[] Element;
//geeft de array van pointers naar de objecten vrij
}
unsigned int size()
//geeft het aantal elementen terug dat in de vector is opgeslagen
{ return Count;
}
unsigned int max()
//geeft het max aantal elementen terug dat in de vector kan worden opgeslagen
{ return Max;
}
T operator[] ( unsigned int index )
//overloaded []-operator
{ if( index < Count )
{ return *Element[index];
}
return *Element[Count];
}
};
#endif