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! Zitieren
Klotzkopp Geschrieben 13. Oktober 2004 Geschrieben 13. Oktober 2004 Muss es ein Array sein? Warum benutzt du keinen vector? Zitieren
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. Zitieren
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. Zitieren
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. Zitieren
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? Zitieren
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 Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.