Organisation von Feldern in Vektoren



  • Hallo,

    ich habe ein 3-Dimensionales Feld.
    Dabei sind die Dimensionen durch imax, jmax, kmax gegeben.
    Nun könnte ich dieses ja als feld[imax+1,jmax+1,kmax+1] anlegen.
    Allerdings möchte ich dies in einem Vektor speichern (brauche den nachher).
    Wie speichere ich dies am sinnvollsten?
    Ich hatte zuerst an vector[i+j*(imax+1)+k*(imax+1)*(jmax+1)] gedacht, wenn ich auf Position i,j,k zugreifen möchte. Aber das klappt nicht wirklich. Lasse ich hinten imax+1 als Faktor weg, sind einige Felder doppelt belegt.

    Wie speichere ich solch eine Vektoren am sinnvollsten ohne Doppelbelegung, und ohne Platzverschwendung?

    Floriank



  • Normalerweise beginnt die Indizierung von C++ Arrays mit 0 - das erleichtert einiges. Und in einem solchen Array kommst du mit vec[i+j*imax+k*imax*jmax] an das Element (i,j,k) (mit 0<=i<imax etc).



  • Hallo,

    da ich die Fälle i=0 oder j=0 oder k=o als Ränder brauche mache ich es also genauso, wie ich es geschrieben hatte mit :
    vector[i+j*(imax+1)+k*(imax+1)*(jmax+1)]

    und die Größe des Vektors ist doch dann imax+1)(jmax+1)(kmax+1), oder?


Anmelden zum Antworten