当用户将值输入到向量中时,编译器崩溃

Compiler crashes when user inputs values into vector

本文关键字:编译器 崩溃 向量 用户 输入      更新时间:2023-10-16

我是堆栈溢出的新手,对编程有些陌生。C++是我的第一门语言,随着实践,我越来越习惯它,但我似乎无法解决这个特殊的问题。我问用户有多少学生参加了一项调查,然后问每个学生看了多少部电影。电影的数量是我试图存储到阵列中的。。。这是代码,

void FormArray(int students){
vector<int> MovieAry(5);
do{
cout << "How many students took the survey?" << endl;
cin >> students;
    if (students < 0)
        cout << "Please enter a positive value" << endl;
}while(students < 0);
for (int i = 0; i < students; i++){
    do{
        cout << "How many movies did student #" << i + 1 << " see? "; 
        cin >> MovieAry[i];
            if(MovieAry[i] < 0)
                cout << "Please enter a positive value" << endl;
            else if( MovieAry[i] > 19)
                cout << "The maximum allowed movies for this survey is 19" << endl;
    }while(MovieAry[i] < 0 || MovieAry[i] > 19);
cout << MovieAry[i] << " "; 
}
}

但在输入最后一个值后,我的按比例分配图崩溃,说我的项目触发了一个临界点。在我使用向量之前,我使用的是一个正则数组,但访问一些奇怪的0x0000数字时出错。

如果有任何帮助,我将不胜感激。

您将MovieAry向量设置为5的大小,然后输入实际的学生人数。如果有5个以上的学生,你将超出向量的界限。我建议你在阅读学生人数后创建向量,并将其设置为所需的大小。