2017-04-20 1 views
-4

무효 메인 1() {구조 프로그램은

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 오류가 발생합니다. 누군가 도와주세요.

+1

당신은 단순히 '자신의 생성 원인이 존재하지 않는 표준 : vector' 요소에 액세스 할 수 없습니다를 해결하려면. 이것은 연관 컨테이너에 속하는 동작입니다. 미리 벡터 크기를 조정하거나 ['std :: vector :: emplace_back'] (http://en.cppreference.com/w/cpp/container/vector/emplace_back)과 같은 메소드로 새로운 요소를 푸시해야합니다. –

+1

'stu'를보세요. 얼마나 많은 원소들이 그 안에 시작되어 있나? – NathanOliver

+0

"일하지 않는 것"보다 구체적으로 작성하십시오 – EJoshuaS

답변

0

귀하의 vector<student>stu에는 현재 요소가 없으므로 존재하지 않는 것에 값을 할당하려고 시도하면 임시 학생을 생성하고 그 값을 할당 한 다음이 임시 직원을 벡터. 이 같은

뭔가 : 루프의 내부

student tempStu; 
getline(cin,tempStu.name); 
stu.push_back(tempStu); 

.

은 또는 당신이 함께 내용을 당신의 벡터의 요소를 정의하고 수정할 수 :

getline(cin,stu[i].name); 
+0

고마워요. – user7897479

0

스투 빈 벡터이다.

stu [0]은 존재하지 않는 stu의 첫 번째 요소를 참조하기 때문에 cin >> stu [0] .quizs를 실행하자마자 프로그램이 중단됩니다.

이 문제

vector<student>stu(qui.size(), {}); //stu.size() and qui.size() must be equal to 12 
+0

고맙습니다. – user7897479