Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
GreveN JLI Master
Alter: 38 Anmeldedatum: 08.01.2004 Beiträge: 901 Wohnort: Sachsen - Dresden Medaillen: Keine
|
Verfasst am: 09.05.2004, 20:38 Titel: 2-dim. STL-Vector |
|
|
Hi @all,
ich hab nen 2-dim. STL-Vector, wie kann ichn den "resizen"?
So wie ich mir das gedacht hab erzeugt das immer nen "Stack Overflow"... |
|
Nach oben |
|
|
Zyrian Super JLI'ler
Anmeldedatum: 30.08.2003 Beiträge: 321 Wohnort: Essen Medaillen: Keine
|
|
Nach oben |
|
|
GreveN JLI Master
Alter: 38 Anmeldedatum: 08.01.2004 Beiträge: 901 Wohnort: Sachsen - Dresden Medaillen: Keine
|
Verfasst am: 09.05.2004, 21:33 Titel: |
|
|
Also ich hatte mir gedacht das ein 2-dim. Vector ja praktisch ein Vector von Vectoren is, also wenn ich ein Vector hab das 10 Elemente umfasst, dann ist jedes Element wiederum ein Vector für sich das dann die Elemente enthält...
Das "resizen" wollte ich so realisieren:
Code: |
m_SpriteVector.resize(m_pTN->m_VidSet.Scr_Width/m_pTN->m_VidSet.Tile_Size);
for(int initVect=0;initVect<m_pTN->m_VidSet.Scr_Width/m_pTN->m_VidSet.Tile_Size;initVect++)
m_SpriteVector[initVect].resize(m_pTN->m_VidSet.Scr_Height/m_pTN->m_VidSet.Tile_Size);
|
zuerst wird praktisch der "äußere" Vector neu dimensioniert, und anschließend jeder "innere" Vector...
Auf diese Weise erzeugt das Programm aber beim Ausführen einen Stack Overflow. |
|
Nach oben |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 10.05.2004, 06:16 Titel: |
|
|
Hab nicht viel Zeit, deshlab Pseudo-Code:
Code: |
for(...)
outervec.pushback(innervec);
for(...)
outervec[ i ].pushback(fubar);
|
_________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
|
Christian Rousselle Site Admin
Alter: 48 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 10.05.2004, 07:53 Titel: |
|
|
Schon klar Hazel, jetzt wo du vom FBI, MI6 und Microsoft wegen den ganzen Würmern gesucht wirst, bleibt wenig Zeit |
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 10.05.2004, 10:56 Titel: |
|
|
Geht das nicht auch normal über resize()?
Oder zumindest, wenn man nur den äußeren Vector durchläuft?
Code: | vector foo < vector < int > >;
foo.resize(8);
for(short i=0; i<foo.size(); i++)
{
foo[i].resize(8);
} |
So würde man sich das backpushen auf den äußeren Vec sparen _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 10.05.2004, 11:09 Titel: |
|
|
Wenn man Angeln will braucht man Würmer.
Nein ich musste zu einer Physikklausur die ich eben versemmelt hab und bei einem letzten verzweifelten Versuch bei meinem Nachbarn abzuglotzen wurde ich leider erwischt. :P Dementsprechend ist meine Laune auch im Moment. ;) _________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
|
GreveN JLI Master
Alter: 38 Anmeldedatum: 08.01.2004 Beiträge: 901 Wohnort: Sachsen - Dresden Medaillen: Keine
|
Verfasst am: 10.05.2004, 11:38 Titel: |
|
|
thx für eure Hilfe
@Lord
nope, so hatte ich mir das ja gedacht, und das erzeugt nen Stack Overflow |
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
|
Nach oben |
|
|
GreveN JLI Master
Alter: 38 Anmeldedatum: 08.01.2004 Beiträge: 901 Wohnort: Sachsen - Dresden Medaillen: Keine
|
Verfasst am: 10.05.2004, 12:15 Titel: |
|
|
Wenn ichs wüsste hätte ich nich gepostet
Die sin nich so riesig, der äußere steht bei mir praktisch für die Anzahl der Tiles in der Bildschirmbreite, 40, und der innere für die in der Höhe, 30. Also kA woher das kommt, ich probiers mal mit Hazels Methode, bin zuversichtlich... |
|
Nach oben |
|
|
GreveN JLI Master
Alter: 38 Anmeldedatum: 08.01.2004 Beiträge: 901 Wohnort: Sachsen - Dresden Medaillen: Keine
|
Verfasst am: 10.05.2004, 12:44 Titel: |
|
|
Also das klappt irgendwie immer noch nicht...
So hab ich das Ding deklariert:
Code: |
std::vector< std::vector< Sprite > > m_SpriteVector;
|
Und so wollte ich das jetzt neu dimensionieren:
Code: |
for(int xResVect=0;xResVect<40;xResVect++)
{
m_SpriteVector.push_back(std::vector);
for(int yResVect=0;yResVect<30;yResVect++)
{
m_SpriteVector[xResVect].push_back(Sprite);
}
}
|
Is bestimmt en ganz simpler Fehler, mir qualmt nur schon der Kopf un ich kann mich grad irgendwie nich konzentrieren... |
|
Nach oben |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 10.05.2004, 12:55 Titel: |
|
|
Code: |
for(int xResVect=0;xResVect<40;xResVect++)
{
m_SpriteVector.push_back(std::vector);
for(int yResVect=0;yResVect<30;yResVect++)
{
m_SpriteVector[xResVect].push_back(Sprite);
}
}
|
std::vector ist kein Datentyp sondern ein Template... du musst es so machen:
m_SpriteVector.push_back(std::vector< Sprite >); _________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
|
GreveN JLI Master
Alter: 38 Anmeldedatum: 08.01.2004 Beiträge: 901 Wohnort: Sachsen - Dresden Medaillen: Keine
|
Verfasst am: 10.05.2004, 14:20 Titel: |
|
|
Uups...
Geht aber irgendwie trotzdem nicht...
Kommt dieser Compilerfehler "Ungültige Verwendung dieses Typs als Ausdruck"
Der Fehler kommt übrigens auch in der 2. Schleife, wo Sprites an den Vector angehängt werden... |
|
Nach oben |
|
|
GreveN JLI Master
Alter: 38 Anmeldedatum: 08.01.2004 Beiträge: 901 Wohnort: Sachsen - Dresden Medaillen: Keine
|
Verfasst am: 10.05.2004, 16:42 Titel: |
|
|
Ok, ich bin dumm... Natürlich darf kein Datentyp an den Vector angehangen werden, sondern ein Element eines Datentyps, is ja eigentlich klar... *vordenkopfschlag*
Problem, jetz hab ich wieder den Stack Overflow... |
|
Nach oben |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 10.05.2004, 19:13 Titel: |
|
|
Dann probier's mal mit Zeigern auf die Objekte... wahrscheinlich sind es zuviele Daten. _________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
|
|