我的代码崩溃,出现以下消息“Thread 1 :: EXC_BAD_ACCESS(code = 1,address = 0x8)”

时间:2017-03-25 12:17:20

标签: c++11 vector

我是c +上的新手,最近发现自己试图理解为什么上面的代码,编译和运行,但是在进入一年级的崩溃之后突然,我发现问题是当我尝试使用“Grade [i] = GradeStudent“而不是”push_back“函数来存储成绩,但我不明白原因,我真的想知道是不是那样工作。 我真的很感激任何帮助。对不起,如果我没有正确地写我的问题,这是我第一次使用stakoverflow提出问题

pd :(我写了preproccesor tagss:#include iostream,vector和iomanip来自标准库)。谢谢

int main() {
    std::vector<double> Grade;
    int i = 0;
    double GradeStudent = 0.0;

    std::cout << "introduce the vector valúes.\n";
    std::cout << "To end introduce -1.\n";

    //Add grades
    while(true){
        std::cout << "Grade[" << i++ <<"] = ";
        std::cin >> GradeStudent;

        if(GradeStudent == -1){
            break;
        }

        // Grade.push_back(GradeStudent);
        Grade[i] = GradeStudent;//-->if i use that,instead the "push_back" the code crash

    }

    std::cout << std::endl;

    return 0;
}

1 个答案:

答案 0 :(得分:0)

Grade[i]崩溃,因为Grade向量为空,因此索引i没有元素。

另一方面,

push_back将给定元素添加到向量中。