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));	
    	}
    

Anmelden zum Antworten