Mehrdimensionaler Vector möglich?



  • Hallo,

    in diesem Forum bin ich neu, auch bei C++ bin ich noch ungeübt.
    Daher wird meine erste Frage vielleicht für Profis seltsam klingen? 🙂

    Ich weiß wie man Mehrdimensionale normale Arrays macht, aber da ich aber Vector bevorzuge, würde es mich interessieren ob bzw. wie man einen Mehrdimensionalen Vector macht?
    Das ist mein Versuch es hinzubekommen:

    std::vector<std::vector<int> > foo;  // 2D Vector, wobei die 2te Dimension aus int besteht
    

    Ob das so überhaupt richtig ist, weiß ich nicht, jedenfalls meckert mein DevCpp5 (gcc 3.4.2) Compiler nicht.
    Doch nun weiß ich nicht wie ich das Array, sowohl die erste Dimension mit int-Arrays als auch die 2te Dimension mit int, befülle?

    Kann mir noch geholfen werden? 😃

    MfG
    Brathering



  • Hallo.
    Dein Ansatz ist richtig.

    Kleines Beispiel:

    #include <iostream>
    #include <vector>
    #include <algorithm>
    #include <iterator>
    
    int main()
    {
        std::vector<std::vector<int> > foo(3);    // foo soll ein vector sein, der 3 vectoren enthält, die jeweils Ganzzahlen beinhalten
    
        for(int i=0; i<3; ++i)
            for(int j=0; j<4; ++j)
                foo.at(i).push_back(j);    // vector befüllen
    
        for(int i=0; i<3; ++i)
        {
            std::copy(foo.at(i).begin(), foo.at(i).end(), std::ostream_iterator<int>(std::cout, " "));    // vector ausgeben
            std::cout << std::endl;
        }
    }
    

    Ausgabe:

    0 1 2 3
    0 1 2 3
    0 1 2 3
    

    Daran kannst du jetzt gut die Dimensionen ablesen:
    Die erste Dimension entspricht jeweils einer Zeile, d.h. also einem vector, der Ganzzahlen enthält.
    Die zweite Dimension entspricht jeweils einer Zahl, d.h. also einem int.

    Gruß



  • Man sollte nur beachten, dass man nicht aus versehen:

    std::vector<std::vector<int>>
    

    schreibt, denn der Compiler misinterpretiert die doppelte spitze Klammer, also besser:

    std::vector<std::vector<int> >
    

    ...nur so als Tip am Rande, für schusselige Menschen, wie ich es einer bin.



  • In reply to -predator-:
    Vielen herzlichen Dank!
    Nun habe ich es verstanden, damit hast du mir sehr geholfen. 🙂

    In reply to Physikalischer Fehler:
    Ja, das war mir auch bereits bekannt, danke. 👍


Log in to reply