Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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!

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.

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.


#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.

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?

Danke für die schnelle Hilfe. Jetzt funktioniert alles so wie es soll und ich hab wieder was dazu gelernt. :uli

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.