结构程序不起作用

时间:2017-04-20 18:20:46

标签: c++ vector structure

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错误,表示向量下标超出范围。 有人请帮忙。

2 个答案:

答案 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