Mehrdimensionale Arrays mit flexibler Größe



  • // Schön, kann ich aber nicht an eine Funktion übergeben
      int testarray[size][size] = {{1,2,3},{4,5,6},{7,8,9}};
    

    😕



  • So meinte ich das nicht. Stehen die benötigten Größen zur Compile-Zeit fest?
    Oder anders: Wenn du später beliebige zur Laufzeit bestimmte Größen brauchst, hast du dann ja eh nicht mehr das Problem mit den Initialisierern, also erübrigt sich die Fragestellung. Wenn das hingegen nicht der Fall ist, brauchst du auch keine Felder dynamischer Größe.



  • Decimad will wissen, ob Du die Größe des Arrays oder der Subarrays zur Laufzeit ändern musst. Wenn zum Beispiel die Subarrays immer nur 3 Elemente haben, brauchst Du nicht vector<vector<T>> zu benutzen. Das wäre quasi overkill. In dem Fall würde ein vector<array<T,3>> völlig reichen.


  • Mod

    nmn schrieb:

    Ja, Otze, das ist mit ein paar kleinen Ausnahmen (wie new und Variablendeklarationen innerhalb von for) reines C, allerdings werde ich in C++ weiterarbeiten, weil das eigentliche Programm OO arbeitet.

    Dir ist bekannt, dass man auch in C OO programmieren kann? Jedoch: Wenn C++, dann mach es auch richtig (im Sinne von: Nutze die Sprachmittel voll aus!). So wie du hier mit dem new hantierst, da ist kein Unterschied zu einem (schlecht gemachten) C-Programm, das ist praktisch bloß #define malloc new .

    Das Problem am Nutzen von C++ ist, dass es zuerst unheimlich viel zu lernen gibt, bevor die Sprache anfängt, richtig gut zu sein. Bevor du nicht mit der Standardbibliothek, den Templates und den Feinheiten der Sprache fit bist und die Denkmuster hinter dem Design von C++ verstanden hast, ist C++ bloß ein C-Abklatsch mit anderen Vokabeln. Die meisten Leute benötigen mehrere Monate Lernphase.



  • Tachyon, Decimad: Es handelt sich um Programme für die Universität. Verschiedene Matrixoperationen (z. B. LU Zerlegung) kommen immer wieder in anderem Zusammenhang vor, daher hatte ich vor, mir eine Matrixklasse zu erstellen, die ich dann nur noch #includen und verlinken muss.

    Leider haben die vorgegebenen Matrizen nicht in jeder Aufgabe dieselbe Größe, diese verschiedenen Größen stehen aber beim _jeweiligen_ Compilieren fest.

    SeppJ: Da magst du Recht haben, was den Unterschied von C zu C++ betrifft habe ich noch viel zu lernen; insbesondere die Idee hinter den Templates erschließt sich mir noch nicht wirklich. Und ja, für einen unbekannten Integer ein new zu benutzen ist etwas sinnbefreit, das ist wahr.



  • So etwas müsste man hier mal in die FAQ aufnehmen: Modern C++



  • Das schreit nach templates und fertigen Template-Bibliotheken!



  • Ja, im Prinzip schreit es danach, Decimad; der Prof ist aber der Meinung, wir sollen eigene Lösungen benutzen.
    Ich habe jetzt erst mal über std::vector gelöst; hoffentlich habe ich demnächst Zeit, mich weiter einzulesen.

    Danke erst mal für eure Hilfe!



  • du studierst?
    was denn? normale informatik?

    wenn ja, dann wird dein studiengang eigentlich voll genug sein, dass der prof dich nicht persönlich erkennt. das heisst, ihm es ist es vollkommen egal, wie du das löst...

    du musst doch eh nur eine lösung liefern können



  • Ja, ich studiere Physik. Das ist eine Wahlvorlesung und wir sind 13...



  • ok, dann klappt das nicht ganz.

    aber ist doch noch besser für dich. es soll funktionieren, wie ist doch egal...



  • Joa... funktioniert ja jetzt auch *gg*
    Wie gesagt, sollte ich Zeit finden lese ich mich nochmal etwas ein und mach dann ordentliche Template - vielleicht freunde ich mich dann auch mal genug mit der Sprache an, um sie im Alltag zu benutzen...



  • was?

    du machst das noch nicht??



  • Was von beiden meinst du?

    Einlesen? Das mit den Templates dauert wohl etwas länger *g*
    Im Alltag benutzen? Nö, Java finde ich (noch) viel umgänglicher, wenn es auch bei numerischen Aufgaben nicht ganz so schnell ist...



  • java kannst du für kleine buisiness anwendungen nehmen, bisschen webkrams auch. aber wenn du kontrolle willst, wenn du speed willst und wenn du spaß haben willst, nimm C++.

    damit kannste auch das andere geschlecht beeindrucken 😉
    hehe
    höhö
    haha



  • Skym0sh0 schrieb:

    java kannst du für kleine buisiness anwendungen nehmen, bisschen webkrams auch. aber wenn du kontrolle willst, wenn du speed willst und wenn du spaß haben willst, nimm C++.

    Zumal Java im Vergleich zu C++ in jeder Hinsicht ein ziemlicher Scheiß ist. 😉
    Vorausgesetzt natürlich, man bleibt bei C++ am Ball und lernt, die Sprache zu nutzen, denn man kann viel lernen und sich immer noch weiter verbessern.



  • nmn schrieb:

    Einlesen? Das mit den Templates dauert wohl etwas länger *g*

    "Modern C++", das Buch der Templates.



  • std__vector<> schrieb:

    nmn schrieb:

    Einlesen? Das mit den Templates dauert wohl etwas länger *g*

    "Modern C++", das Buch der Templates.

    meinst du den alexandrescu?



  • "C++ Templates - The Complete Guide" ist das Buch der Templates (OT: Templatebuch != Buchtemplate)



  • nonvec schrieb:

    (OT: Templatebuch != Buchtemplate)

    hehe^^


Anmelden zum Antworten