dynamisches Array



  • Hey!

    Ich muss für die Schule ein Programm programmieren. In dem muss ich unter anderem Termine speichern.

    Ich hatte vor die ganzen Termine in ein dyn. Array zu speichern (ja ich weiß das ist der totale Resourcenkiller ...).
    Ich hatte mir das vorgestellt, dass das ähnlich wie in vb zu lösen ist mit einer Art ReDim Preserve Methode (ja ich weiß die heißt nur in vb so).

    Gibt es so etwas ähnliches auch für C++??
    Wie verwend ich sowas???

    wär nett wenn ihr ein klein wenig bspcode posten könntet.

    Danke gamecounter



  • Hab dazu folgenden Code gefunden der meine Frage allerdings nicht ganz erklärt:

    int main (void)  
    {  
            // Abmessungen des 2D Arrays  
        const int erste_dimension  = 10;  
        const int zweite_dimension = 20;  
    
            // Erste Dimension initialisieren  
        int** zweiD_array = new int*[erste_dimension];  
    
            // Zweite Dimension Anhängen  
        for (int i=0; i<erste_dimension; ++i)  
        {  
            zweiD_array[i] = new int[zweite_dimension];  
        }  
    
        // [...]  
    
            // Mit den 2D Array arbeiten  
        zweiD_array[5][4] = 42;  
    
        // [...]  
    
            // Und nach der Party wieder aufräumen!  
        for (int i=0; i<erste_dimension; ++i)  
        {  
                // Zweite Dimensionen der Ersten Dimension löschen  
            delete [] zweiD_array[i];  
        }  
            // Erste Dimension löschen  
        delete [] zweiD_array;  
    }
    

    Ich möchte nähmlich nachdem ich schon Daten ins Array eingetragen habe die größe ändern.

    gamecounter



  • Schau dir mal std::vector an, das sind dynamische Felder in C++:

    http://www.kharchi.de/cppratgeber2.htm



  • Danke genau sowas hab ich gesucht!!!

    vielen Dank!!

    gamecounter



  • gibt es das ganze auch in mehrdimensional??? ihr wisst schon was ich meine oder??



  • Ja, einfach einen Vector in einen Vector rein packen (steht glaub ich auch in der FAQ vom C++ Forum):

    vector<vector<int> > my_multi_vec;  // das Leerzeichen zwischen "> >" beachten!
    

    Oder am besten die Boost-Library benutzen, die hat eine spezielle Klasse für sowas:
    http://www.boost.org/libs/multi_array/doc/index.html



  • und wie ruf ich die inhalte dann ab oder schreibe sie??



  • Kann es sein, das du nicht mal die C++ Basics kannst? Ist doch ganz easy, wenn ich schon gesagt habe, wie man ihn instanziert:

    std::vector<std::vector<int> > m;
    std::vector<int> a; 
    m.push_back(a); // erstmal die Multi-Dimension initialisieren.
    // evtl. Felder vorreservieren
    
    m.at(0).push_back(100);  // in [0][letztes_Feld] die 100 rein.
    std::cout << m[0][0];  // [0][0] anzeigen.
    std::cout << m.at(0).at(0);
    

    Aber wie gesagt, boosts Multiarray ist evtl. performanter und eigentlich eher dafür ausgelegt. Aber vector tut es ja auch.



  • sorry das ich dir mit solchen Fragen auf den geist geh.

    mir fehlen wirklich sämtliche Grundlagen!!

    Danke trotzdem für die Hilfe!!



  • Wie gesagt, in der FAQ war schon die Lösung drin. Hab jetzt mal für dich reingeschaut und gefunden:

    http://www.c-plusplus.net/forum/viewtopic-var-t-is-39489.html

    Ist jedoch nur ab dem 4. Punkt interessant!!!



  • Es ist immer wieder verwunderlich das jemand ein Programm schreiben MUSS obwohl er keine Grundlagen hat.

    Ich würde bei einem Schulfach nicht immer kurz vor Ende lernen sondern bereits zu Beginnn aufpassen.

    Man kann in Chemie vor der Schlußarbeit den Schulstoff auswendig lernen aber nicht in der Informatik.



  • Dieser Thread wurde von Moderator/in Unix-Tom aus dem Forum MFC mit dem Visual C++ in das Forum C++ verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Log in to reply