kündigen, genannt nach dem werfen einer Instanz von 'std::out_of_range'
Warum passiert das mein Programm sagt, es hat keine Fehler, aber dann, wenn ich es bekomme ich kündigen, genannt nach dem werfen einer Instanz von 'std::out_of_range' what(): vector:_M_range_check. Ich bin neu in c++ so verstehe ich nicht, diese Fehler
#include <vector>
#include <iostream>
#include <random>
#include <time.h>
using namespace std;
using std::vector;
int main()
{
vector<int> deck;
vector<int> nums;
default_random_engine eng(time(0));
uniform_int_distribution<int> dis(0, 51);
int pos1;
int pos2;
int num1;
int num2;
int i;
int n;
int m;
for (i = 0; i < 52; i++)
{
nums.push_back(i);
}
for(int j = 0; j < 52; j++)
{
cout << nums.at(i) << "\n";
}
for(n = 0; n < 50; n++)
{
pos1 = dis(eng);
pos2 = dis(eng);
cout << pos1 << "\n" << pos2 << "\n";
num1 = deck.at(pos1);
num2 = deck.at(pos2);
}
}
deck leer ist, wird Sie nie etwas in es
Dies ist zu erwarten. Eine nicht behandelte Ausnahme verursacht das Programm zu beenden.
Dies ist zu erwarten. Eine nicht behandelte Ausnahme verursacht das Programm zu beenden.
InformationsquelleAutor Costas Vrahimis | 2013-10-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sieht es für mich aus, als wenn diese durch einen Tippfehler, und Sie sollten die variable " j " in der zweiten Schleife.
Nach der ersten Schleife,
die variable " i " enthält den Wert 52, so klingt es erwartet, dass der Aufruf nums.bei(i) wirft eine std::out_of_range, da nums enthält nur 52 Werte, beginnend mit dem index 0.
Fix it durch den Austausch der argument at() mit 'j', die ich davon ausgehen, war die ursprüngliche Absicht:
InformationsquelleAutor Martin J.
Du Zugriff auf Elemente in
deck
hier:aber es ist leer. Füllen Sie es an einem gewissen Punkt, bevor Sie diesen aufrufen. Sie können überprüfen, ob ein Vektor leer ist, mit der
std::vector::empty
Methode, und erhalten es ist die Größe mitstd::vector::size
. Sehen Sie diesestd::vector
- Referenz für weitere Informationen über diese beiden Methoden.InformationsquelleAutor juanchopanza