Array im Konstruktor Größe zuweisen
-
Hallo zusammen kann irgendwie nicht mehr richtig überlegen heute
Also ich hab in meiner hpp ein array angelegt
int daten [][]
und im Konstruktor bekomme ich die beiden Größen w und l übergeben
So und nun kommt halt die Große Lücke im Programm ich bekomm das mit den Zeigern nicht mehr richtig hin. Wie muss ich jetzt das Array richtig initialisieren???
Hab zu erst mit einem vector von vectoren von int´s gearbeitet wenn mir da jemand die Zuweisung erklären könnte wäre super aber das mit dem einfachen array würde mir für heuet Abend glaub ich auch reichen
-
#include <cstring> // memset class Foo { public: Foo(int x, int y); private: int** p; }; Foo::Foo(int x, int y) { p = new int*[x]; for(int i = 0; i < x; ++i) { p[i] = new int[y]; memset(p[i], 0, y); } }
#include <vector> using std::vector; class Foo { public: Foo(int x, int y); private: vector< vector<int> > v; }; Foo::Foo(int x, int y) : v(x) { for(int i = 0; i < x; ++i) v[i].resize(y, 0); }
mfg
-
terraner schrieb:
memset(p[i], 0, y);
Das funktioniert aber nicht, da memset zeichenweise arbeitet.
-
Das mit dem vector kappt aber
und zwar einwandfrei
Danke
-
Das mit dem vector kappt aber
und zwar einwandfrei
Danke
-
groovemaster schrieb:
terraner schrieb:
memset(p[i], 0, y);
Das funktioniert aber nicht, da memset zeichenweise arbeitet.
Stimmt. Fällt mir jetzt auch auf.
memset(p[i], char(0x0), y);
mfg
-
terraner schrieb:
Stimmt. Fällt mir jetzt auch auf.
memset(p[i], char(0x0), y);
Nein, du verstehst nicht. Das setzt y chars auf 0, und nicht y ints.
-
groovemaster schrieb:
Nein, du verstehst nicht. Das setzt y chars auf 0, und nicht y ints.
"Stimmt. Fällt mir jetzt auch auf."*ohne kommentar*
naja, next time... dann wird alles wieder gut!
Danke für den Tipp!mfg
-
groovemaster schrieb:
Nein, du verstehst nicht. Das setzt y chars auf 0, und nicht y ints.
Veto: memset setzt die ersten y Bytes auf 0. Jetzt muss man nur noch wissen, wie Groß ein int ist.
memset(p[i], 0, y*sizeof(int));
-
Killing me softly schrieb:
Veto: memset setzt die ersten y Bytes auf 0.
Wieso veto? 1 Byte ist in C++ doch 1 char. Zudem schreibt der C Standard folgendes
The memset function copies the value of c (converted to an unsigned char) into
each of the first n characters of the object pointed to by s.Wieso du also explizit von Bytes sprichst ist mir unverständlich.