Frage zu vector



  • Hallo, was macht dieser Befehl genau ?

    vector< vector<int> > var;
    

    Was is ein normaler Vector ist das weiss ich, aber ein vector im vector was passiert da? o_O



  • Das macht einen vector aus vectoren. Manche Leute machen sowas wenn sie ein 2D Array haben wollen...



  • Kann man den nur so ein 2D Vector machen?

    Wenn man keinen Vector verwendet dann kann man ja auch schreiben z.b.

    int var[2][2];



  • Das ist dann aber kein vector sondern ein Array fixer Größe...



  • dot schrieb:

    Das ist dann aber kein vector sondern ein Array fixer Größe...

    Und das auch noch im C-Style. Wenn es nicht um Performance geht (und selbst das schien in einem Thread hier widerlegt worden zu sein, korrigiert mich bitte), soll man das lassen (auch wenn man, wenn man lernt damit umzugehen, ganz gute Chancen hat, es nicht zu verbocken).

    Ein vector von vector's ist einfach ein normaler Vektor, bei dem jedes Element ein anderer Vektor ist. Also zuerst mit at() oder operator[]() einen vector herauswählen, un dann bearbeiten.

    std::vector<std::vector<int>> vec;
    
    vec.push_back({1,2,3,4}); //Einen vector in vec einfügen.
    vec.at(0).at(0); // 1
    

    Ich nehme mal an, der Konstruktor mit der initializer_list ist nicht explicit .



  • Hacker schrieb:

    dot schrieb:

    Das ist dann aber kein vector sondern ein Array fixer Größe...

    Und das auch noch im C-Style.

    Wie sieht denn der entsprechende C++ Style aus?



  • Gugelmoser schrieb:

    Hacker schrieb:

    dot schrieb:

    Das ist dann aber kein vector sondern ein Array fixer Größe...

    Und das auch noch im C-Style.

    Wie sieht denn der entsprechende C++ Style aus?

    Ja gleich natürlich. Ein vector aus vectoren ist imo jetzt nicht unbedingt die ideale Lösung für mehrdimensionale Arrays. Besser sowas wie boost::multi_array.



  • Gugelmoser schrieb:

    Hacker schrieb:

    dot schrieb:

    Das ist dann aber kein vector sondern ein Array fixer Größe...

    Und das auch noch im C-Style.

    Wie sieht denn der entsprechende C++ Style aus?

    std::array<std::array<int, 2>, 2> var;  //evtl. auch std::tr1::array oder boost::array
    

Anmelden zum Antworten