2017-03-25 1 views
0

Im에 새롭다. 최근에 왜 위의 코드가 컴파일되고 실행되는지 이해하려고 시도했지만 갑자기 첫 번째 등급 충돌을 입력, 나는 그 문제가 내가 "성적 [i] = GradeStudent"대신 성적을 저장하는 "push_back"함수를 사용하려고 할 때였다는 사실을 알고 있지만 그 이유를 이해하지 못한다. 그리고 나는 정말로 원한다. 그런 식으로 일하는 것이 아닙니다. 정말 도움이됩니다. 죄송합니다. 제 질문을 올바르게 작성하지 않은 경우 stakoverflow를 사용하여 질문을하는 것이 처음입니다.내 코드가 "스레드 1 :: EXC_BAD_ACCESS (코드 = 1, 주소 = 0x8)"

pd :(표준 라이브러리에서 iostream, vector 및 iomanip을 #include했습니다.) :(preproccesor 태그를 #include했습니다.) Grade 벡터가 비어 있기 때문에 당신에게

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; 
} 

답변

0

Grade[i] 충돌 감사, 그래서 요소는 인덱스 i에 없습니다.

push_back 다른 한편으로 주어진 요소를 벡터에 추가합니다.

관련 문제