Hallo Leute! Hätte da eine Frage an euch. Also, wie man ein normales array mit variabler Größe definiert weiß ich: z.B: float array = new float [variable]; Jetzt würde ich allerdings ein 2d-array mit variabler Zeilenanzahl benötigen. Kann mir da jemand weiterhelfen? mfg.
Reinhard Leitgeb schrieb: > float array = new float [variable]; das ist kein C, das ist c++. Da würde ich an deiner Stellen STL-Container benutzen. std::vector< std::vector< float > > array;
Und wenns am Ende doch C sein soll kannst du auch mit malloc, realloc, calloc arbeiten.
Oder du nimmst mein VarArr.h (in http://mfgkw.dyndns.org/vararr_release.zip zu finden). Darin ist eine template-Klasse VarArr<>, mit der man ein Feld eines beliebigen Typs anlegen kann und dann mit der Schreibweise meinfeld[index] darauf zugreifen kann Damit hast du so etwas ähnliches wie einen std::vector, allerdings mit folgenden grundlegenden Unterschieden: - man muß sich nicht darum kümmern, daß ein Element auch existiert. Das wird automatisch beschafft, sobald es zum ersten Mal verwendet wird. - Die Feldindices müssen nicht bei 0 beginnen. Es ist genauso möglich, meinfeld[100] bis meinfeld[120] zu nehmen oder sogar negative Indices, z.B. meinfeld[-10]. Weil du hier ein zweidimensionales Feld brauchst, kann man VarArr< VarArr< float > > nehmen (oder gleich double, wie man will). Die inneren Teilfelder können gleich lang sein, müssen aber nicht unbedingt.
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
Das sieht dann so aus:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
Wenn ich mal ganz viel Zeit habe, mache ich noch Iteratoren dazu...
Gast
#2312774
Vlad Tepesch schrieb: >> float array = new float [variable]; > > das ist kein C, das ist c++. Vor allem ist es ein Fehler, den der Compiler anmeckern wird.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.