vector mehrdimensional



  • Hallo!

    Kennt jemand einen Link, der mir erklärt, wie ich am besten
    dynamische Matrizen implementiere?

    vector<vector<int> > wollte ich bisher verwenden, macht mir aber Probleme.
    Warum geht z.B. nicht

    vector<vector<int> > matrix;
    ...
    //mit mit Werten füllen
    ...
    cout<< (matrix[4])[5];
    

    Dankeschön,
    Raphael



  • was geht nicht?

    int zeile = 10,spalte = 5;
    
    vector<vector<int> > matrix ;
    
    matrix.assign(zeile, vector<int>(spalte)) ;
    


  • der Tip assign zu verwenden ist super!

    im Moment die Ausgabe:

    spalte = 5;
    zeile = 10;
    int ausg = (matrix[spalte])[zeile];
    cout << ausg <<endl;
    

    liefert:
    cannot convert `std::vector<int, std::allocator<int> >' to `int' in assignment

    Grüße!



  • cout<<matrix[x][y];
    int ausg=matrix[x][y];
    

    Und wenn dir die vector<vector<foo> >schreibweise nicht transparent genug ist:

    template<class foo, std::size_t dims>
    class multi_vec
        :public std::vector<multi_vec<foo,dims-1> >{};
    
    template<class foo>
    class multi_vec<foo,1>
        :public std::vector<foo>{};
    
    template<class foo>
    class multi_vec<foo,0>;
    


  • Morgen,

    raphael2 schrieb:

    der Tip assign zu verwenden ist super!

    im Moment die Ausgabe:

    spalte = 5;
    zeile = 10;
    int ausg = (matrix[spalte])[zeile];
    cout << ausg <<endl;
    

    liefert:
    cannot convert `std::vector<int, std::allocator<int> >' to `int' in assignment

    Grüße!

    das liegt an deiner Klammerung. Dort steht dann, wenn X eine Zahl ist:
    X[zeile]

    mfg
    v R



  • entschuldige, dass ist mir noch nicht ganz klar:

    wenn ich vector<vector<foo> > fooMatrix habe und
    fooMatrix[4] abfrage (und da ist auch wirklich was im Speicher),
    bekomme ich dann nicht vector<foo> als Rückgabewert?

    Auf vector<foo> könnte ich dann nochmal den []-Operator
    anwenden und bekäme foo myfoo = (fooMatrix[4])[5] ...?



  • raphael2 schrieb:

    entschuldige, dass ist mir noch nicht ganz klar:

    wenn ich vector<vector<foo> > fooMatrix habe und
    fooMatrix[4] abfrage (und da ist auch wirklich was im Speicher),
    bekomme ich dann nicht vector<foo> als Rückgabewert?

    Auf vector<foo> könnte ich dann nochmal den []-Operator
    anwenden und bekäme foo myfoo = (fooMatrix[4])[5] ...?

    Autsch, ja fehler von mir. Dann faellt mir keinen plausible Erklaerung ein.

    mfg
    v R


Anmelden zum Antworten