列表的字符串成员,我有一个这样的结构: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