Magoo Geschrieben 13. Oktober 2004 Geschrieben 13. Oktober 2004 Hallo, ich habe folgenden Programmcode struct basis { int wert1; int wert2; int wert3; } *Datenbasis; int main() { // 1. ermitteln der Anzahl erfolgt hier irgendwo und wird in int-Variablen x gespeichert Datenbasis = new basis[x]; // dann passiert noch mehr // 2. kann man hier noch mehr speicher reservieren? // hier wird gerechnet // 3. Speicher freigeben delete []Datenbasis; } Ist es möglich, an Stelle 2. noch mehr Speicher für weitere Elemente zu reservieren? Wenn ja, wie? Ich kenne mich mit C++ und dynamische Speicherreservierung nicht so gut aus. Wäre schön, wenn mir jemand helfen könnte!
Klotzkopp Geschrieben 13. Oktober 2004 Geschrieben 13. Oktober 2004 Muss es ein Array sein? Warum benutzt du keinen vector?
Magoo Geschrieben 13. Oktober 2004 Autor Geschrieben 13. Oktober 2004 Wo liegt denn genau der Unterschied? Wo liegt der Vorteil? Ein Beispiel wäre vielleicht nicht schlecht. Wie gesagt, mit C++ kenne ich mich nicht so toll aus. Bin da eher ein Anfänger.
Guybrush Threepwood Geschrieben 13. Oktober 2004 Geschrieben 13. Oktober 2004 Wenn du new und delete benutzt hast du nur die Möglichkeit dein Array auszulagern, es neu und größer anzulegen und dann die Daten von der Auslagerung zurück zu kopieren. Wenn du malloc und free verwendest, nimmt dir realloc die arbeit ab. Oder halt wie Klotzkopp sagt ein vector der die komplette Arbeit abnimmt. EDIT: Ein Beispiel für den vector kann ich nicht liefern da ich ihn nur einmal verwendet habe. Über die Suche müsstest du aber was finden.
Klotzkopp Geschrieben 13. Oktober 2004 Geschrieben 13. Oktober 2004 #include <vector> struct basis { int wert1; int wert2; int wert3; }; std::vector<basis> Datenbasis; int main() { // 1. ermitteln der Anzahl erfolgt hier irgendwo und wird in int-Variablen x gespeichert Datenbasis.resize(x); // dann passiert noch mehr // 2. kann man hier noch mehr speicher reservieren? Datenbasis.resize(neue_groesse); // hier wird gerechnet // 3. Speicher freigeben // fällt weg, macht der vector }[/CODE] Statt resize kannst du auch neue Elemente mit push_back anhängen.
Magoo Geschrieben 13. Oktober 2004 Autor Geschrieben 13. Oktober 2004 Und wie spreche ich dann Wert1, Wert2 und Wert3 an? Im Array gehts ja bekanntlich so: Datenbasis[0].Wert1 = 12; Geht das bei einem Vector nocht genau so?
Magoo Geschrieben 13. Oktober 2004 Autor Geschrieben 13. Oktober 2004 Danke für die schnelle Hilfe. Jetzt funktioniert alles so wie es soll und ich hab wieder was dazu gelernt. :uli
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden