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 leerestd::vector<int>
enthält. Damit ist jeder Zugriff auf ein Element in der Formmatrize1.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.