Mehrdimensionale Vektoren (Anfänger)



  • Hallo ich muss mehrdimensionale Vektoren schreiben jedoch mache ich immer wieder Fehler. Compilieren lässt es sich aber bei der Ausführung (Wenn ich nur eine Zahl eingebe die ich zuweisen will, kommt es zum folgenden Fehler:

    terminate called after throwing an instance of 'std::out_of_range'
    what(): vector::_M_range_check: __n (which is 0) >= this->size() (which is 0)
    Abgebrochen (Speicherabzug geschrieben)

    Code:

    vector<vector<int> >matrize1(2);
    vector<vector<int> >matrize2(2);
    cout << "Dieses Programm berechnet Ihnen das Produkt 2er Matrizen";
      for(int x=0; x<2; x++){
        for(int y=0; y<2; y++){
        int wert;
        cout << "Geben Sie den Wert der ersten Matrize an der Stelle x:" << x << " y: " << y << '\n';
        cin >> wert;
        matrize1.at(x).at(y) = wert;
        }
      }
    

    Ich habe länger etwas über mehrdimensionale Vektoren gesucht jedoch habe ich wenig gefunden was mir weiter helfen könnte. Also könnte mir jemand sagen was ich falsch mache ? Vielen Dank im Voraus 🙂



  • vector<vector<int> >matrize1(2);
    

    Erzeugt einen std::vector , der zwei leere std::vector<int> enthält. Damit ist jeder Zugriff auf ein Element in der Form

    matrize1.at( x ).at( y )
    

    ungültig. Der erste Zugriff mit at( x ) ist ok, da der äußere Vektor zwei Elemente enthält. Der zweite Zugriff .at( y ) ist allerdings ungültig, da der innere Vektor leer ist.

    size_t Outer = matrize11.size();
    size_t Inner = matrize11[0].size();
    


  • Stimmt, vielen dank DocShoe! Ich habe es nun mit

    matrize1.at(x).push_back(wert);
    

    gelöst.


Anmelden zum Antworten