列表的字符串成員,我有一個這樣的結構: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