2 dimensionales, dynamisches array



  • epidemic schrieb:

    Was hier oben in dem Beispiel produziert wird ist kein c++, meiner meinung nach

    Ich hatte zu Beginn auch geschrieben, dass es sich hierbei um reines C handelt. VCL-typisch wäre meiner Meinung wie gesagt DynamicArray oder Set. std::vector ist ok, aber doch auch nicht BCB-spezifisch, oder?

    Edit:

    Radiation2K5 schrieb:

    wie kommst du auf sowas?

    Jahrelange Erfahrung... dann kommen auch die Tricks und Kniffe.



  • std::vector ist nicht BCB-Spezifisch... und anstelle des calloc wäre vielleicht ein new ganz witzig. Und von Pointerarithmetik in Dingen die der Compiler erledigen könnte halte ich nur beschränkt viel...

    -junix



  • junix schrieb:

    Und von Pointerarithmetik in Dingen die der Compiler erledigen könnte halte ich nur beschränkt viel...

    Könntest du das etwas genauer beschreiben? Ich arbeite an der Uni an einem Projekt mit in dem die von mir gezeigte "Technik" recht intensiv genutzt wird.



  • junix schrieb:

    std::vector ist nicht BCB-Spezifisch...
    -junix

    Ja, das ist richtig.

    Dann gehört aber der ganze Thread auch woanders hin 😉
    Außerdem ist eine Lösung, die aus dem C++ standard kommt(STL) eher zu bevorzugen als eine Frameworkabhängige, oder?

    Ich bevorzuge schon eine Standard Lösung, frameworkunabhängig, wo es nur geht. Dann ist es egal ob ich MVC++ oder den C++ Builder verwende...
    Das nur als Argument.



  • Dasd schrieb:

    junix schrieb:

    Und von Pointerarithmetik in Dingen die der Compiler erledigen könnte halte ich nur beschränkt viel...

    Könntest du das etwas genauer beschreiben? Ich arbeite an der Uni an einem Projekt mit in dem die von mir gezeigte "Technik" recht intensiv genutzt wird.

    Dann ist es aber ein C Projekt.
    bei C++ ist allotieren mit new zu verwenden.

    Oder Deine Kollegen an der Uni kennen nur diese Technik 😉



  • Dasd schrieb:

    junix schrieb:

    Und von Pointerarithmetik in Dingen die der Compiler erledigen könnte halte ich nur beschränkt viel...

    Könntest du das etwas genauer beschreiben? Ich arbeite an der Uni an einem Projekt mit in dem die von mir gezeigte "Technik" recht intensiv genutzt wird.

    Dann ist es aber ein C Projekt.
    In C++ allokiert man mit new.

    Oder Deine Kollegen an der Uni kennen nur diese Technik 😉



  • schon mal so versucht?

    int m = 3;                               // ANZAHL DER ZEILEN.
    int n = 5;                               // ANZAHL DER SPALTEN.
    int **int_array;
    
    int_array = new int*[m];                 // SCHRITT 1: ZEILEN EINRICHTEN
    
    for (int j = 0; j < m; ++j)
       int_array[j] = new int[n];            // SCHRITT 2: SPALTEN EINRICHTEN.
    
    // löschen
    for (int i = 0; i < m; ++i)
       delete[] int_array[i];                // SCHRITT 1: SPALTEN LÖSCHEN
    
    delete[] int_array;                      // SCHRITT 2: ZEILEN LÖSCHEN
    

    aus der BCB-Hilfe

    Nighthero



  • Nighthero schrieb:

    schon mal so versucht?

    int m = 3;                               // ANZAHL DER ZEILEN.
    int n = 5;                               // ANZAHL DER SPALTEN.
    int **int_array;
    
    int_array = new int*[m];                 // SCHRITT 1: ZEILEN EINRICHTEN
    
    for (int j = 0; j < m; ++j)
       int_array[j] = new int[n];            // SCHRITT 2: SPALTEN EINRICHTEN.
    
    // löschen
    for (int i = 0; i < m; ++i)
       delete[] int_array[i];                // SCHRITT 1: SPALTEN LÖSCHEN
    
    delete[] int_array;                      // SCHRITT 2: ZEILEN LÖSCHEN
    

    aus der BCB-Hilfe

    Nighthero

    Ich glaube nicht daß bei diesem Konstrukt der delete sauber durchgeführt wird

    Vielleicht überlegst Du es nochmal in Ruhe 🙂



  • Ich sehe keinen Fehler 😕



  • Sorry, eine Zeile habe ich übersehen.

    Ist schon richtig.
    Trotzdem würde ich von solchen Konstrukten abraten.

    STL gibt doch alles erdenkliche her, oder?
    Selbst Meyers(und er muß es schließlich wissen) empfiehlt Zeiger dort zu meiden wo es nur geht.



  • Ok, aber als alter Zeigerfetischist hatte ich halt mit so einer Möglichkeit geliebäugelt. 😃

    Nighthero


Anmelden zum Antworten