In std::vector std::vector einfuegen



  • Wie kann ich in

    std::vector<std::vector<int> > matvec;
    

    Werte einfuegen?

    Habs so versucht:

    matvec[1].push_back(wert);matvec[1].push_back(wert);matvec[1].push_back(wert);
    matvec[2].push_back(wert);matvec[2].push_back(wert);matvec[2].push_back(wert);
    

    Das klappt schon mal gar nicht. Es gibt nen Segmentation fault. Ist ja auch logisch, weil der Compiler nicht weiss, dass es [1], bzw.[2] gibt, bzw. geben soll.

    Wie fuege ich die Werte richtig ein?



  • Du hast einen Vektor mit Elementen vom Typ Vektor, also musst du zuerst einmal Vektoren hinten anfügen und kannst dann in die einzelnen Vektoren Elemente einfügen.

    Also erst einmal den Hauptvektor vergrößern:

    matvec.resize(anzahl der vektoren);
    

    Dann kannst du in die "Untervektoren" Elemente einfügen:

    matvec[0].push_back(wert1);
    matvec[0].push_back(wert2);
    matvec[1].push_back(wert3);
    

    MfG SideWinder



  • Danek.
    Ist das die einzige Moeglichkeit?
    Find ich 'n bisschen umstaendlich...



  • Zum Glück hat der std::vector einen Konstruktor der die Größe angibt:

    std::vector<std::vector<int> > matvec (groesse);
    matvec[0].push_back(erster_vec_wert1);
    matvec[0].push_back(erster_vec_wert2);
    matvec[groesse-1].push_back(letzter_vec_wert1);
    matvec[groesse-1].push_back(letzter_vec_wert2);
    

    MfG SideWinder


Anmelden zum Antworten