structur array pointer größe ändern



  • hi alle,
    ich (ver)suche eine einfache Lösung, um ein Pointer-Structur-Array in
    seiner Größe zu verändern. Am besten nur mit new und delete. Wer weiß Rat?

    best regards
    Mozart



  • Ich weiß nicht ob ichs richtig verstanden habe, aber vllt. hilft dir das hier weiter:

    T* resizeStruktur(T *old, int oldAnz, int newAnz) { // old - Zeiger auf das alte Array; oldAnz - Anzahl Elemente in old; newAnz - neue Anzahl Elemente
      if(oldAnz>=newAnz) // Gib 0 zurück oder werf ne Exception
      T *neu = new T[newAnz];
      for(int i=0; i<oldAnz; ++i) {
         // Kopiere alle alten Elemente von "old" nach "neu"
      }
      delete[] old;
      return neu;
    }
    

    Am Ende des Programms solltest du nicht vergessen delete[] aufzurufen.

    Edit: Eventuell solltest du das nicht zurückgeben, sondern besser neu an old zuweisen. Da ich auf old delete[] angewandt habe, ist das zurückgeben, wenn du es an einen anderen Pointer zuweißt, als an den den du bei old angegeben hast, kannst du diesen nicht mehr benutzen. (Wobei old dann ein Zeiger auf einen Zeiger oder eine Referenz auf einen Zeiger sein muss.)



  • Eine noch bessere Lösung wäre es wohl, statt blanker Arrays einen STL-Container zu verwenden, z.B. vector<> - die können sich selber um die Vergößerung/Verkleinerung ihres Speichers kümmern.


Anmelden zum Antworten