void main1() {
struct student
{
string name = "bob";
int quizs;
int labs;
int midterms;
int finals;
int classs;
int grade;
};
student stude;
vector<student>stu;
vector<string>qui{"Quiz 1","Quiz 2","Quiz 3", "Quiz 4","Quiz 5","Quiz 6","Quiz 7","Quiz 8"," Quiz 9","Quiz 10",
"Quiz 11", "Quiz 12"};
vector<string>La{ "Lab1", "Lab2","Lab3", "Lab4", "Lab5", "Lab6", "Lab7", "Lab8", "Lab9", "Lab10", "Lab11", "Lab12",
"Lab13", "Lab14", "Lab15", "Lab16", "Lab17" };
vector<string>mid{ "Midterm 1", "Midterm 2" };
vector<string>fin{ "Final 1", "Final 2" };
for (int i = 0; i < 12; i++)
{
cout << "please enter your score for " << qui[i] << ": ";
cin >> stu[i].quizs;
}
}
我无法使用此代码。当我尝试在MIcrosoft Visual工作室中运行它时,我得到一个令人讨厌的line1234错误,表示向量下标超出范围。 有人请帮忙。
答案 0 :(得分:0)
您的vector<student>stu
目前没有元素,因此您尝试为不存在的内容分配值,您可以通过创建临时学生并为其分配值来解决此问题,然后推送温度到你的矢量。
这样的事情:
student tempStu;
getline(cin,tempStu.name);
stu.push_back(tempStu);
你的循环内部。
或者,您可以定义矢量的元素,并使用以下内容修改内容:
getline(cin,stu[i].name);
答案 1 :(得分:0)
stu是一个空矢量。
一旦尝试执行cin&gt;&gt;您的程序就会崩溃stu [0] .quizs,因为stu [0]引用了stu的第一个不存在的元素。
解决此问题
vector<student>stu(qui.size(), {}); //stu.size() and qui.size() must be equal to 12