Von Programmabstürzen und Vectoren!
-
Hallo und herzlich Willkommen in meinem ersten Post, oder mehr noch: Meinem ersten Thread.
Ohne lang drumherum zu reden:
Ich arbeite momentan an einem Projekt. (Wer hätte das Gedacht? Jetzt kommt das interessante...) Im Rahmen dieses Projekts habe ich mich mit den STL Vectoren auseinander gesetzt und sie kurzerhand auch eingebaut, weil dynamische Arrays einfach resourcensparender sind, wenn man nicht weiß wieviele Elemente man später einmal haben wird.. und die Grenzen zwischen 0 und 999999 Variieren könnten. (Letzters ist wohl eher unwahrscheinlich...Das dürte kein CPU mehr mitmachen. *hust*)Nun..schön ung gut:
Hier ersteinmal der Quelltext, der mir mein Programm abschießt: (Ich bin relativ sicher, dass es dieser Abschnitt ist, ich kann mich allerdings auch irren.^^)[...]Header Einbindungen und so weiter ;D[...] vector<vector<particle*> > objects; //Globaler, zweidimensionaler Vektor [...] void fill_p() { try { for(loop=0;loop<MAX_PARTICLES;loop++) { objects[0].push_back(new particle(0,m_y_max,0.4,0.4,0.4,2.0,d_gold)); //objects[0][loop]->fill_in_value(0,m_y_max,0.4,0.4,0.4,2.0,d_gold); } } catch(...) { MessageBox(NULL,"Hier dürfte irgendwann einmal eine Fehlermeldung stehen.","Runtime Error!",MB_OK | MB_ICONINFORMATION); } }Bei Bedarf poste ich auch die Klasse "particle", Der Code oben ist übrigens (Oho...jetzt kommt die Überraschung!) stark gekürzt. :3
Die Frage ist nun: Hat jemand eine Idee, wo mein fehler liegt?
Danke im Voraus,
Grüße!
-
würde ich auch fliegen ... vector[0] ist nicht definiert ... das solltest du sehen, wenn du mal statt vector[0] einfach vector.at(0) nutzen würdest und exception-handling machst

-
Huch Tatsächlich.
Wenn ich die at() Methode nutze wird die Exception geworfen.
Ich werdes mal eben probieren mit dem Definieren von objects[0] ... ist ja eigentlich logisch..wieso habe ich das nirgens... *grübelt*Danke schoneinmal!
Edit: Die Frage ist nun allerdings: Wie definiere ich in diesem zweidimensionalen Vektor die erste Dimension?
-
in dem du einen objects.push_back(std::vector<particle*>) ? oder was meinst du? ^^
-
Hatte ich schon probiert, aber da wirft mir mein Dev nen Fehler an dne Kopf:
"expected primary-expression before ')' token"
-
Für was den vector<vector<x> > wenn du ihn nur einmal füllst?
und mit vec.push_back(vector<vector<x> >()) müsste es klappen.
-
Es gibt nur um die erstmalige Initialisierung. Später kommen weitere Dimensionen dazu.
Danke schon einmal für die Bemühungen!
Edit:
Mit
objects.push_back(vector<particle*> ());
hat es schließlich geklappt, vielen Dank!