2-dimensionale Map
-
Ich versuche gerade, eine 2D-STL-Map dynamisch zusammenzutackern.
Derzeit sieht das bei mir ungefähr so aus:#include <map> using namespace std; struct CELL {/*egal*/}; map<int,map<int,CELL>> cells; int my_x=5, my_y=7; // sind eigentlich dynamisch for(int x=0; x<mx; x++) { cells.insert(/*was muss hier hin*/); for(int y=0; y<my; y++) { cells[x].insert(y, CELL foo); } }
-
Sehr schön.
Wenn der Index allerdings bei 0 anfängt und auch noch sequentiell (?) ist, wie in deinem Beispiel, wäre doch ein std::vector die erste Wahl.
-
an die hab ich mich noch nie rangewagt... :p
-
die? Übrigens wollte ich dich noch darauf hinweisen, dass du keine Frage gestellt hast, noch gesagt hast, was du eigentlich willst.
-
Ich suche nach einer Möglichkeit, dies fehlerfrei zu realisieren.
Auf gutdeutsch: Wie mache ich ein voll-dynamisches 2D-Aray, in dass ich Zeile für Spalte Elemente einfügen kann?
-
Füge einfach eine neue map ein.
Du hast ja eine map von maps, also musst du, wenn du eine weitere Kolonne/Zeile einfügen willst zuerst eine neue map einfügen, in der du dann die cell's einfügst.
EDIT:
Das sollte das Vorgehen ein wenig erläutern:typedef std::map<int,float> diminner; typedef std::map<int,diminner> dim2map; int dim_x = 5,dim_y = 10; dim2map m; for (int i = 0; i < dim_x; i++) { diminner m2; for(int y = 0; y < dim_y; y++) m2.insert (std::pair<int,float> (i,2.0f)); m.insert (std::pair<int,diminner>(i,m2)); }