Matrizen



  • Moin,

    Wie speichere ich am einfachsten die Elemente einer Matrix (in einer Klasse), damit ich auch mit [][] darauf zugreifen kann.

    ich hatte erst an die Möglichkeit gedacht, sie als float** zu speichern und mit dem Operator dann die Zeile float* zurückzugeben.
    gibts noch bessere Möglichkeiten???



  • als 2d vector der vector klasse vielleicht?



  • hm....dann müsste ich beim operator[] wieder den vector zurückgeben........aber anderst wirds nicht gehen....



  • Doch, geht anders. Musst mal die Forensuche benutzen.



  • ich hab jetzt mit der Suchfunktion noch folgende Möglichkeit gefunden:
    Jetzt frag ich mich, wies da mit der effizienz aussieht, da ja bei jedem Zugriff eine Instanz der Klasse Zeilenproxy erstellt würde, (oder fängt der Compiler das ab???)

    class Vector2D
    {//ungetestet
    private:
       Vector data;//der macht copy-ctor, dtor und op=
    public:
       class Zeilenproxy
       {
          private:
             Vector2D& v2d;
             int zeile;
          public:
             Zeilenproxy(Vector2D& _v2d,int _y)
             :v2d(_v2d),y(_y)
             {
             }
             double& operator[](int x)
             {
                return v2d.data[y*SIZEX+x];//kacke, nur demo
             }
       }
       ZeilenProxy operator[](int y)
       {
          return Zeilenproxy(*this,y);
       }
    };
    

Anmelden zum Antworten