|
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Tarek Gast
|
Verfasst am: 22.09.2002, 15:10 Titel: Zwei dimensionales Feld aufm Stack |
|
|
Hi alle zusammen,
ich habe das Problem, dass ich nicht in der Lage bin ein Zweidimensionales Feld aus Integern auf dem Stack zu erzeugen. Also ich erhalte aus einer Datei die Breite und die Höhe eines Feldes als Strings, diese werden von String in Integer mit Hilfe von atoi konvertiert. Nun meckert der Compiler rum, dass keine konstante Feldgrenze gesetzt wurde. Aber bei Felder auf dem Stack braucht man die ja auch eigentlich nicht.
Also habe ich der Zeit folgendes da zu stehen
int *iMap = new int [iMaxX][iMaxY];
und da meckert er rum. Auf den Ratschlags eines Freundes hin, habe ich auch schon
int** iMap = new int[iMaxX][iMaxY];
probiert. Hoffe mir kann wer weiterhelfen.
Gruss Tarek |
|
Nach oben |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 22.09.2002, 17:19 Titel: |
|
|
Das geht so auch nicht...
Code: |
int ** array;
array = new int * [WIDTH]; // EDIT
for(int foo = 0; foo < WIDTH; foo++)
array[foo] = new int[HEIGHT];
|
Löschen musst du das dann andersrum... also erst in in der Schleife 'delete[] array[foo]' und dann 'delete[] array'; _________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Zuletzt bearbeitet von Hazel am 22.09.2002, 18:58, insgesamt einmal bearbeitet |
|
Nach oben |
|
|
Kampfhund Super JLI'ler
Alter: 42 Anmeldedatum: 20.07.2002 Beiträge: 408
Medaillen: Keine
|
Verfasst am: 22.09.2002, 17:34 Titel: |
|
|
es muss doch:
array = new int*[Width];
for(..)
{
array[loop] = new int[height];
}
heißen. |
|
Nach oben |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 22.09.2002, 18:59 Titel: |
|
|
Sorry wollte ich auch schreiben. _________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
|
Starwash Senior JLI'ler
Alter: 40 Anmeldedatum: 22.09.2002 Beiträge: 252 Wohnort: Zossen (bei Berlin) Medaillen: Keine
|
Verfasst am: 22.09.2002, 21:58 Titel: Danksagung |
|
|
Ich danke euch, dafür dass ihr mir so schnell weitergeholfen habt, aber diese Variante wurde mir schon von einem Freund empfohlen und funktioniert auch gut, aber ich finde sie sehr umständlich und bin eigentlich auf der Such nach einer besseren.
Da es sonst äußerst umständlich wird, falls man mal ein 8/9 oder gar 10 dimensionales Feld benutzen will. Ich weiß zwar noch nicht, wo für ich die brauchen könnte, aber umständlich würde es auf jeden fall werden.
Naja mal sehen, ich bin gerade bei einen Lösungsansatz mit einem Freund zu erarbeiten, welcher eine Klasse sein soll, die ein N-dimensionales Feld erstellen kann. Mal gucken, ob wir das vielleicht hinkriegen. Sofern es möglich ist eine Klasse Rekursiv auzurufen?!?
Gruss Tarek |
|
Nach oben |
|
|
AFE-GmdG JLI MVP
Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 22.09.2002, 22:42 Titel: |
|
|
Ob umständlich oder nicht, das ist nunmal die einzige Methode, nur so hat man volle Kontrolle über seinen verbrauchten Speicher, hat alle Adressen usw...
Und ich habe noch NIE einen Anwendungsfall gesehen, der mehr als 4-Dimensionale Felder gebraucht hätte...
Überleg dir doch ganz einfach mal, was für Speicher gebraucht werden würde, legst du ein 10-Dimensionales Array mit einer länge von je 100 Einträgen je Dimension (4 Byte Integer zur vereinfachung.)
Das sind mehrere Terrabyte!!!
AFE-GmdG _________________
CPP: | float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;} |
|
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|