У меня есть эта структура:C++ как получить доступ к члену строки из списка структур
struct student {
string name;
int practical_grade;
int exam_grade;
int number_of_absences;
};
Я создал список этой структуры. Я могу получить доступ ко всем int
членам, но когда я пытаюсь получить доступ к name
, моя программа останавливается. Любая идея почему?
int main() {
string studentName;
int practicalGrade;
int examGrade;
int numberOfAbsences;
list <student> lista;
list <student>::iterator it = lista.begin();
cout<<"\tName: "; cin>>studentName;
cout<<"\tpractical grade: "; cin>>practicalGrade;
cout<<"\texam grade: "; cin>>examGrade;
cout<<"\tnumber of absences: "; cin>>numberOfAbsences;
lista.push_front({studentName,practicalGrade,examGrade,numberOfAbsences});
cout<< "elem: " << (*it).name;
cout<< "practical grade: " << (*it).practical_grade;
cout<< "\nexam: " << (*it).exam_grade <<' ' << (*it).number_of_absences <<"\n";
}
'push_front()' iinvalidates 'it', полученный с помощью' begin() '. –
Поскольку список пуст, begin() возвращает значение конечного итератора, которое остается действительным. Но тогда разыменование конечного значения итератора является неопределенным поведением. –
@ πάνταῥεῖ no. ['push_front'] (http://en.cppreference.com/w/cpp/container/list/push_front) не отменяет никаких итераторов. – user2079303