Mehrdimensionale Arrays mit flexibler Größe


  • 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^^



  • Skym0sh0 schrieb:

    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?

    ja.



  • hat der Thread schon nen Ende?
    Ist es wirklich so problematisch da nen kleines Template zu schreiben?

    Also ich mein wenn du das in C++ machen willst dann mach es auch in C++ 🙂
    Das macht man einmal und dann hat man Ruhe.

    http://ideone.com/bvFc0B
    ungetestetes Beispiel



  • Tag!

    Sorry, ich musste auch mal nach Hause gestern *g*

    Habe mich etwas eingelesen auf eure Hinweise hin und das Ganze jetzt so gelöst, was eigentlich ganz einfach ist:

    template <int R, int C>
    class doubleMatrix {
      double cont[R][C];
      int rows, cols;
    public:
      doubleMatrix() {
        rows = R;
        cols = C;
      }
    };
    

    *hurra*

    Ich könnte jetzt auch noch double flexibel machen, aber da ich eh nix anderes verwende bleibt das erst mal so.

    Wenn ich jetzt
    std::array< std::array< double, C >, R > cont
    statt
    double[R][C]
    benutze meckert allerdings mein Heimcompiler, während der Uni-Compiler das schluckt... *gnah* ein Verständnisschritt vor und zwei zurück...
    Deinen Link werde ich nachher mal lesen, ScottZhang.

    Auf die Sprachendiskussion will ich mich gar nicht einlassen, nur mal kurz anmerken, dass modernes Java (7 oder 😎 nur noch numerisch in der Geschwindigkeit nachhinkt und es mehr eine Frage des Geschmacks ist. Die Ausführungsgeschwindigkeit ist ja meistens nicht mehr der Flaschenhals...


Anmelden zum Antworten