Matrix in Datei Speichern



  • wie speicher ich am besten eine Matrix (test[50][2000]) in eine Datei.

    Ich kenn nur die klassische Variante mit fopen, fwrite etc.

    Macht es überhaupt Sinn solche Matrixen zu nehmen oder gibt es dafür andere Strukturen die man benutzen kann?

    /Edit akari : Sorry mein Fehler. Hab Editieren anstelle Zitieren gedrückt...



  • Hallo

    wie speicher ich am besten eine Matrix (test[50][2000]) in eine Datei.

    Ich kenn nur die klassische Variante mit fopen, fwrite etc.

    fopen/fwrite sagt natürlich nicht sehr viel aus wie du das im Detail abspeicherst.
    Aber C++ bietet bereits modernere Strukturen an (std::fstream)

    Macht es überhaupt Sinn solche Matrixen zu nehmen oder gibt es dafür andere Strukturen die man benutzen kann?

    Ja. Solch große Arrays sollten nicht statisch auf dem Stack angelegt werden denn der ist recht begrenzt. Hier ist dynamische Speichereservierung mittels new[] besser, dort hast du den ganzen Speicher des Heaps zur Verfügung.
    Wenn man dann noch std::vector benutzt wird einem auch die manuelle Speicherverwaltung abgenommen.

    bis bald
    akari



  • ich hab solche felder noch nie dynamisch angelegt, wie geht denn das?

    ein einfaches feld leg ich ja so an:

    int anzahl=10;
    float  *test =new float[anzahl];
    

    wenn ich das ganze jetzt erweiter dann gibt es fehlermeldungen

    int zahl1=20;
    int zahl2=30;
    float *test = new float[zahl1][zahl2];  // <-- geht nicht
    

    😞

    Danke erstmal für die hilfe



  • Hallo

    Du must zuerst die äußere Dimension als einfaches Pointer-Array erstellen und danach in einer Schleife für jedes Element der ersten Dimension ein weiteres Array für die innere Dimension anlegen. Das notwendige manuelle Löschen mittels delete[] muß analog ebenfalls zuerst die inneren Dimensionen löschen und dann die äußere. Beispiele dafür findest du sicher im C-Forum.

    In C++ verwendet man der Einfachkeit und Sicherheit wegen std::vector, in diesem Fall verschachtelt.

    std::vector<std::vector<float> > test;
    

    Bitte lies erstmal gründlich den Magazin-Artikel zum Thema STL-Containern hier im Forum.

    bis bald
    akari


Anmelden zum Antworten