gpt4 book ai didi

C++如何访问结构列表的字符串成员

转载 作者:行者123 更新时间:2023-11-30 03:40:56 25 4
gpt4 key购买 nike

我有一个这样的结构:

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

最佳答案

一开始,列表是空的。当您在空列表上调用 lista.begin() 时,它会返回一个指向列表末尾的迭代器。然后,当您取消引用迭代器时:(*i​​t),您正在取消引用不指向任何元素的结束迭代器。这具有未定义的行为。

解决方案:当列表实际包含一个元素时声明并初始化。或者简单地说:

cout<< "elem: " << lista.front().name;
// ...

关于C++如何访问结构列表的字符串成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37676950/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com