[Erledigt] 2dimensionale Vectoren auslesen
-
Hi,
ich bin gerade dabei, mir einen 2 dimensionalen Vector zu schreiben, um mir darin meine Mapdaten (also quasi Tilemap) darin zu speichern.
Funktioniert bisher auch toll, nur der Zugriff zu dem entsprechenden Index will mir nicht einleuchten.Der Vector sieht wie folgt aus:
std::vector<std::vector<int>> vMapData;Die dazugehörigen Iteratoren:
std::vector<int>::iterator i = vMapData[0].begin(); std::vector<std::vector<int>>::iterator j = vMapData.begin();Naja und die dazugehörige for schleifen Verschachtelung:
for( ; i!= vMapData[0].end(); ++i) { for(; j!= vMapData.end(); ++j) { switch(--->>>mein Problem<<<---) { case 0: sTexture = "Chipset/gras.PNG"; break; case 1: sTexture = "Chipset/rock.PNG"; break; } } }Habe hier am "--->>>mein Problem<<<---"-Punkt einiges ausprobiert z.B.
vMapData[i][j] vMapData.at(i).at(j)allerdings immer mit entsprechender Fehlermeldung^^
error C2664: 'const std::vector<_Ty> &std::vector<std::vector<_Ty>>::at(unsigned int) const': Konvertierung des Parameters 1 von 'std::_Vector_iterator<_Ty,_Alloc>' in 'unsigned int' nicht möglich(eine davon, gehört zu dem .at() Beispiel)
Nunja, jetzt bin ich am Ende mit meinem Latein und wende mich (wieder mal :)) voller Hoffnung an euch xD
mfg
-
du vermischt iterator-zugriff mit operator[], was nicht gut kommen kann.
ein iterator ist ein Zeiger auf das Objekt im Vector.
der operator[] erwartet einen unsigned wert.hier ein kleines Beispiel:
for(unsigned int x= 0; x<vMapData.size(); x++) for(unsigned int y = 0; y<vMapData[x].size(); y++) std::cout << vMapData[x][y] << std::endl;
-
Ja, das ist mir ja klar^^
Nur meine Frage ist, wie letztendlich die Syntax für einen gültigen Zugriff auf meine Vectoren über Iteratoren ist.
-
Hallo,
Wie wärs damit
for( std::vector<std::vector<int> >::iterator j = vMapData.begin(); j!=vMapData.end(); ++j) { for( std::vector<int>::iterator i = j->begin(); i!=j->end(); ++i) { // tu was mit i } }
-
Ok,
das war wieder mein fehlendes Puzzlteilchen^^Wenn man j auf i->begin() setzt, und nicht wie ich willkürlich auf 1 Element von MapData, dann ist j Praktisch der Punkt auf meinem Koordsystem.
Danke dafür.
mfg