C++如何访问结构列表的字符串成员
C++ how to access a string member of a list of structures
我有一个这个结构:
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()
时,它会将迭代器返回到列表的末尾。然后,当您取消引用迭代器时:(*it)
,您将引用不指向任何元素的结束迭代器。这具有未定义的行为。
解决方案:当列表实际包含元素时声明并初始化it
。或者简单地说:
cout<< "elem: " << lista.front().name;
// ...
评论已经回答了。在代码中:
lista.push_front({studentName,practicalGrade,examGrade,numberOfAbsences});
it = lista.begin(); // Update it
cout<< "elem: " << (*it).name;
cout<< "practical grade: " << (*it).practical_grade;
cout<< "nexam: " << (*it).exam_grade <<' ' << (*it).number_of_absences <<"n";
相关文章:
- 没有为自己的结构调用列表推回方法
- 访问类lintalizer列表中的结构元素
- 将大括号括起来的初始值设定项列表作为结构返回
- 为什么这个 std::queue/指向结构的指针列表直到 List.Size() == 0 才释放内存?
- C++-将具有引用的长参数列表重构为结构
- 在C++中循环访问自定义结构列表的小问题
- 访问列表向量中的结构
- c ++数据输入并读回列表中的结构结构中的数组
- 如何在结构初始值设定项列表中实例化类
- 结构数组的构造函数错误,错误消息:没有构造函数实例与参数列表匹配
- 使用初始化列表填充C++中的多维结构数组时出现问题
- 使用列表进行动态结构分配
- 如何从结构列表中筛选信息
- 当接收到不明确的规范时,表示图的邻接列表的数据结构
- 用于筛子的最佳数据结构是什么(即一些被划掉的数字列表)?
- C/C++intellisense 0.26.1不显示结构成员列表
- C++使用旧编译器GCC 4.4.0在结构列表中查找字符串
- 列表结构和数组的奇怪问题
- 释放包含STL类的链接列表结构的内存
- c++游戏的列表结构