006
14.02.2005, 14:45 Uhr
ABC_Freak
|
ne wuste ich nich... und verstehen tu ichs gleich noch weniger aber egal war ein volltreffer
ging jetzt sogar (allerdings musste ich das ganze projekt komplett neu kompilieren da der linker wohl nich so ganz auf der hoehe war)
grosses danke ans helferlein: DANKE
schade das ich nich java machen darf :-( da gibts solche problemen von wegen was in welche datei schon mal garnich.
fuer alle die wissen wollen wie "arraylist.h" aussieht hier:
C++: |
template <class T> class ArrayList : public List<T> { public: ArrayList(int startSize=10, double extendValue=10, bool stepOrFactor=true);
virtual ~ArrayList(); void add(T o); T get(int index) const; void remove(int index);
private: int maxCount; int curCount; T * field; double extendValue; void(ArrayList::*extender)(double); void extendStep(double stepSize); void extendFactor(double fac); };
template <class T> ArrayList<T>::ArrayList(int startSize, double extendValue, bool stepOrFactor) : List<T>() { maxCount = startSize; curCount = 0; field = new T[maxCount]; this->extendValue = extendValue; if(stepOrFactor) extender = &ArrayList::extendStep; else extender = &ArrayList::extendFactor; }
template <class T> ArrayList<T>::~ArrayList() { delete [] field; }
template <class T> void ArrayList<T>::add(T o){ // check bounds if(curCount>=maxCount) (this->*extender)(extendValue); // add the element to the end field[curCount++] = o; } template <class T> void ArrayList<T>::remove(int index){ int size = sizeof(T); // copy the appendix after the index one slot to front for(int i=index+1; i<curCount; ++i){ field[i-1] = field[i]; } } template <class T> T ArrayList<T>::get(int index) const { return field[index]; } template <class T> void ArrayList<T>::extendFactor(double fac){ // make new one T * newField = new T[ (int)(maxCount*extendValue)]; // copy content memcpy(newField,field,curCount*sizeof(T)); // delete old delete [] field; // point to new field = newField; }
template <class T> void ArrayList<T>::extendStep(double stepSize){ // make new one T * newField = new T[(int)(maxCount+extendValue)]; //copy content memcpy(newField,field,curCount*sizeof(T)); // delete old delete [] field; // point to new field = newField; }
|
|