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?