Zweidimensionales Array zu Vektor konvertieren



  • Hi,
    ich schildere erstmal mein Problem. Ich habe hier dieses Array:

    unsigned int grid[80][80];
    

    Dieses wird nun mit Werten gefüllt. Jetzt möchte ich dises Array abspeichern und zurücksetzen, damit meine Funktion wieder das Array von neuem mit Werten füllen kann.
    Wie oft ich das tue ist nicht fest. Ich kann also nicht einfach ein dreidimensionales Array nehmen.

    Meine Idee war nun, das ich einen Vektor erzeuge und meine Arrays "einfach" mit pushback anhänge.

    Geht das? Oder würdet ihr das anders machen?

    Mfg,
    Mo3bius



  • Wenn du nicht weißt, wie viele Dimensionen deine Struktur haben soll, wirst du mit sowas

    vector<vector<int> > v;
    

    ja vermutlich nicht zurechtkommen.

    Könnte ein Fall für ein Kompositum sein.
    http://de.wikipedia.org/wiki/Kompositum_(Entwurfsmuster)



  • Oder so:

    typedef tr1::array<tr1::array<unsigned int,80>,80> grid;
    
    void foo() {
      grid g;
      g[3][5] = 99;
      vector<grid> grids;
      grids.push_back(g);
    }
    

    (ungetestet)

    Also... Wenn Du das Array in ein struct packst oder tr1::array benutzt, kann man das ganz normal kopieren wie alles andere sonst auch.



  • Ah, jetzt hab ich erst verstanden, dass einfach nur mehrere 2D-Arrays gespeichert werden sollen.
    Dann ist krümelkackers variante ja gut, und auch eleganter als der

    vector<vector<vector<int> > > v;
    

    den ich vermutlich vorgeschlagen hätte wenn ich die Frage direkt gerafft hätte. 😉


Anmelden zum Antworten