Zeigerarray mit unbekannter Größe erstellen
-
Ich will meine dvk Liste mit qsort sortieren,
gedacht hab ich mir das so:Ich erstelle ein Zeigerarray meiner Liste und sortiere dieses Array mit qsort.
Danach verknüpfe ich die sortierten Elemente wieder.Problem ist dies: ich weis naturlich die Größe meiner Liste, die Anzahl der Elemente nicht, darum muss ich sie zuerst zählen und dann das Array erstellen.
Ein Array erwartet natürlich eine konstante Größe und darum wollte ich euch fragen
wie ich das am besten löseIst es möglich diese Array trotzdem zu erstellen ohne konstante ?
Wäre es geschickt das Array bei jeden neuen Element um 1 zu erweitern ?
oder ist die das Zeigerarray selbst keine gute Idee ?könnt ihr mir bitte helfen
-
Du kannst doch dynamisch mit new Speicher für das Array allokieren, genauso wie Du es wahrscheinlich auch für ein einzelnes, neues Element der Liste machen wirst.
Für ein array eines Typs T wäre das dann "T *arr = new T[anzahlderELemente]".Brauchst Du die Liste zwischendurch mal im unsortierten Zustand? Wenn nein, könntest Du Dir das nachträgliche Sortieren sparen, indem Du von Anfang an neue Elemente dort einsortierst, wo sie hingehören.
Aber was besser/schlechter ist, kann ich Dir jetzt auch nicht direkt sagen...
-
Danke für die Hilfe,
wegen dem sortierten einfügen das hatte ich schon aber ich muss sie ja auch während ich die Liste verwende mal umsortieren darum brauch ich den qsort.
-
int ** p = new int*[size]; //oder leichter lesbar typedef int* pointer_auf_int; pointer_auf_int * p2 = new pointer_auf_int[size]; //nicht vergessen delete[] p; delete[] p2;
-
std::vector<T*> ?