Pointer auf Multidimensionale Arrays
-
hi,
wie deklariere ich einen pointer auf multidimensionale int-arrays? und wie mach ich das am besten wenn ich n array mit ner grösse, die eingegeben wird erstellen will? darf ich es einfach so machen:int main ()
{
int x,y;
...
cin>>x;
cin>>y;
int array[x][y];
...
return 0;
}
oder mach ich das lieber anders, z.b. mit new array[x][y]? (da bräucht ich dann auch den pointer :-/)thx für hilfe
-
int main () { int x,y; ... cin>>x; cin>>y; int array[x][y]; ... return 0; }
Nein, so geht das nicht, da die groesse des Array wenn sie auf dem Stack angelegt werden soll schon zur compilierzeit bekannt sein muss. Das ganze sollte dann eher so aussehen.
int main () { int x,y; ... cin>>x; cin>>y; int * array[][]; array = new int[x][y]; ... return 0; }
EDIT: ne, so geht das nicht, das ist eher java
-
int * array[][]; array = new int[x][y];
Das funktioniert? Kenne das eigentlich nur so:
int **array; array = new int*[x]; for(int i = 0; i < x; ++i) array[i] = new int[y];
mfg
v R
-
das mit dem int *pointer[][] hatte ich auch schon versucht
det funzt net... aber int **pointer geht...
thx!
-
aber die einzelnen teile des array mit ner schleife abzufahren is ja auch n bissel umständlich
gibbet da keine andre lösung?
-
Du kannst einen 2 dimensionalen Vector benutzen: Siehe Beispiel 4
-
k ich versuchs mal... nochmal zu dem dynamischen mehrdimensionalen array... wie lösche ich das ding zum schluss?
-
ok habs... thx für eure hilfe
-
noch ne frage: wenn ich jetzt n 2dimensionales vector-array hab, also zb.
vector< vector< int > > test;
und ich hab in test[4] 6 integer drin, dann muss ich wenn ich test[4] löschen will, vorher die einzelnen elemente dadrin löschen, oder?
thx
-
Nein, das macht der Destruktor des Vektors automatisch.
Aber aufpassen, falls du stattdessen Zeiger verwendest, sieht das Ganze anders aus.Tschüss
-
ok danke!