Einsendung:

Datei "Vector.h"

Datei "Vector.h":

#include <assert.h>

template<class T>
class Vector
{
private:
   T *m_data;
   int m_size;
public:
   Vector(int size)
   {
      m_size=size;
      m_data=new T[m_size];
   };
   
   Vector(const Vector &derAndereVector)    
   {
      m_size=derAndereVector.m_size;
      m_data=new T[m_size];
      for(int i=0;i<m_size;++i)
         m_data[i]=derAndereVector.m_data[i];
   };
   
   ~Vector()
   {
      delete[] m_data;
   };
   
   T& operator[](int index)    
   {
      assert(index>=0);
      assert(index<m_size);
      return m_data[index];
   };
   
   int getSize()
   {
      return m_size;
   };
   
   void grow(int newSize)    
   {
      // Diese Methode legt ein neues Array der neuen Größe an,
      T *newData=new T[newSize];
      // kopiert dann alle Werte des alten Arrays in das neue Array,
      for(int i=0;i<m_size;++i)
         newData[i]=m_data[i];
      // löscht das alte Array
      delete[] m_data;
      // und setzt dann die Attribute m_size und m_data auf die
      //neuen Werte.
      m_size=newSize;
      m_data=newData;
   };
   
   Vector &operator=(const Vector &derAndereVector)    
   {
      if(&derAndereVector!=this)
      {
         delete m_data;
         m_size=derAndereVector.m_size;
         m_data=new T[m_size];
         for(int i=0;i<m_size;++i)
            m_data[i]=derAndereVector.m_data[i];
      };
      return *this;
   };
   
};

Genau so ist es richtig.



Falls Ihnen Fehler im Text auffallen oder Sie Verbesserungsvorschläge haben, dann schicken Sie mir bitte eine Mail. Ich werde mich dann sofort darum kümmern.
[aktuelle Version] [inhalt] [index]      [Fehlerkorrektur, Verbesserungsvorschlag]

© Volkard Henkel <volkard@normannia.de>, last update: 08/25/00