speicher dynamisch anfordern Problem!!
-
Ich möchte den Speicher für ein 2d array dynamisch anfordern, warum funzt das nicht?
int *ptr_poly; ptr_poly=new int[500][ecken];
Geht das generell nur bei 1d arrays?
-
du kannst das auch anders schreiben. das müsste auch klappen:
int *ptr_poly; ptr_poly = new int[500 * Ecken]
und zugreifen tust du dann so:
ptr_poly[y * 500 + x]; //y gibt die spalte an //x gibt die reihe an
-
Weil nur new[] und nicht new[][] überladen ist.
Letzteres geht übrigens auch garnicht.
Es funktioniert so:int** ppN; ppN = new int*[500]; for(int n = 0; n < 500; ++n) ppN[n] = new int[ecken]; // Am Ende: for(n = 0; n < 500; ++n) delete ppN[n]; delete[] ppN;
Mit dem Ende ist das nicht ganz korrekt, glaube ich. Musste ausprobieren.
EDIT:
gibbets Lösung ist natürlich besser, wenn die Daten direkt linear liegen, erspart einem das einiges:
Die häufigen Doppelschleifen, komplexere Arithmetik (ok, so komplex ist sie ja dann auch nicht), etc.EDIT2:
@gibbets:
Hm, gibt nicht eher x die Spalte an?Mfg MAV
-
in unser faq gibts dazu ein beitrag mit intersanten alternativen http://www.c-plusplus.net/forum/viewforum.php?f=25