C++ Vektor im Vektor, Deklaration?

Argonic

Lt. Junior Grade
Dabei seit
Apr. 2005
Beiträge
340
Hallo, ich nutze Dev-C++ unter Windows und ich hatte vor, einen Vektor folgendermaßen zu deklarieren:
vector< vector <vector<double> > >name;
Jetzt wollte ich gerne dem 1. Element des Äußeren Vektors, davon dem 1. Element einen Wert hinzufügen, was mit
name[0][0].push_back(zahl);
oder
name[0][0][x]=zahl;
gehen müsste, Dev-C++ kompiliert es mir auch so, aber wenn ich das Programm dann ausführen lassen, dann kommt immer eine Fehlermeldung, von wegen ...exe funktioniert nicht mehr. Hab ich da bei der Deklaration etwas falsch gemacht oder liegt es am Windows?
(Ich benutze Windows Vista Business)
Vielen Dank im Voraus für eure Hilfe,
Argonic
 

Raechaer

Lt. Junior Grade
Dabei seit
Aug. 2004
Beiträge
277
Dein Problem ist vermutlich, dass du einen leeren vector erstellst, und mit name[0][0] greifst du dann auf das nicht existierende erste Element zu.

Um einen 3-dimensionalen vector der Größe width x height x depth zu erstellen bei dem alle Einträge mit def initialisiert werden kannst du folgendes verwenden:

PHP:
int width = 10, height = 10, depth = 10;
int def = 17;
vector<vector<vector<double> > > name(width, vector<vector<double> > (height, vector<double>(depth, def)));
Damit kannst du dann mit z.B. "cout << name[0][0][5] << endl;" auf das Element (0,0,5) zugreifen.

Ob das eine schöne und schnelle Lösung ist sei mal dahingestellt, unter Umständen bist du mit Boost Multiarray besser bedient.
 
Top