Frage zu Feldern / Arrays / Matrix 2d



  • Hallo an alle,
    ich habe 2 Fragen zu 2d-Arrays welche ich leider trotz längere suche in Buch und Netz nicht ausreichend beantworten konnte.

    1.) Ich habe 2 Arrays gleicher größe
    int a[20][20] und
    int b[20][20]

    Wie kann ich den Inhalt von array b auf a kopieren? Gibt es da ein simplen Befehel so ähnlich wie bei Variablen z.b. a = b möglich wäre?
    Habe dazu nichts gefunden und es jetzt über 2 For-Schleifen gemacht, geht ja auch aber falls es was einfacheres gibt wüßt ich das gern. 🙂

    2.) Und eigentlich wichtiger für mich ist die Frage nach einem Befehl mit dem ich ein Array mit Startwerten bestücken kann. Ich hätte gern ein 20x20 array in dem jede "Zelle" den Wert 100 hat. Ist dies ohne Schleife möglich? Kenne mich mit den Befehlen noch nicht so gut aus und frage mich obs da nicht schon was gibt.

    Vielen Dank schonmal für eure Hilfe.

    MfG Richard



  • memcpy und memset



  • Vielen Dank.

    Muss ich bei memcpy die länge angeben?
    Oder würde es vielleicht auch so gehen für meine 20x20 arrays?

    memcpy (a,b);

    vielleicht kann mir noch jemand zeigen wie der Quelltext aussehen muss für ein 20x20 array indem alle "Zellen" den Wert 100 haben??

    Vielen Dank nochmals ...

    Viele Grüße - Richard



  • gibt auch ne c++ reference (nicht nur eine)

    feld setzen mit memset geht nicht so einfach, weil sizeof(int) != sizeof(char)

    feld kopieren

    void * memcpy ( void * destination, const void * source, size_t num );
    

    wurde also in etwa so aussehen

    a=b

    memcpy (a, b, 20*20*sizeof(int));
    

    mit rumcasten 🙂 hab grade keine compiler zur hand,

    sowas sollte man aber vermeiden, oder erst anwenden, wenn
    man denkt das es laufzeit-verbesserungen verspricht,
    und das muss es bei den heutigen compilern nichtmal ...

    dann lieber schleifen, dann weiss auch jeder was du machen willst,
    oder pack es gleich in

    template <class T>
    class Matrix
    {
    }
    

    dann kannste mit (wenn die richtigen operatoren definiert wurden)
    auch sowas schreiben

    Matrix<double> a(20,20);
    Matrix<double> b(20,20);
    
    a=0;
    b=1;
    
    a = b;
    


  • Es geht auch:

    #include <algorithm>
    
    //...
    copy((int*)a, &(a[20][19]), (int*)b);
    

    Und zum Füllen:

    #include <algorithm>
    
    //...
    fill((int*)a, &(a[20][19]), 100);
    

Anmelden zum Antworten