为什么我在插入地图时遇到 seg 错误
Why am I getting a seg fault when inserting into a map?
我正在尝试将一个地图的内容插入到另一个地图中。这是代码:
std::map<std::string, int> Student::getGrades() const;
...
for(set<Student*, Cmp>::const_iterator it = s.begin(); it!=s.end(); ++it)
{
grades.clear();
grades.insert((*it)->getGrades().begin(), (*it)->getGrades().end());
for(map<string, int>::const_iterator itt = grades.begin(); itt!=grades.end(); ++itt)
{
if(itt->first == course && itt->second >= score1 && itt->second <= score2)
(*it)->display(cout);
}
}
s 是一个包含指向学生对象的指针的集合,每个学生对象都有一个返回映射的 getGrades() 方法。我正在尝试查找与我从文件中读入的成绩相匹配的成绩,并打印与这些成绩相对应的记录。但是,插入方法给了我一个 seg 错误。有什么建议吗?
如果getGrades()
返回成绩图的副本而不是参考,则begin()
和end()
将属于 2 个不同的地图。
您可能应该制作一个本地副本,并像这样简化代码:
for(set<Student*, Cmp>::const_iterator it = s.begin(); it!=s.end(); ++it)
{
map<string, int> grades = (*it)->getGrades();
for(map<string, int>::const_iterator itt = grades.begin(); itt!=grades.end(); ++itt)
{
if(itt->first == course && itt->second >= score1 && itt->second <= score2)
(*it)->display(cout);
}
}
在设置s
中可能存在未初始化的指针。
相关文章:
- Seg Fault Issue C++ (file IO / getline)
- 编译包含字符串的代码时遇到问题
- 遇到新行时,有没有办法停止istream_iterator
- 在使用GPU支持编译Tensorflow时,会遇到CUDA_TOOLKIT_PATH未绑定变量
- 如何在C++向量中奇数元素前面加上值-1,我在使用insert函数时遇到了问题
- 在 for 循环中查找问题时遇到困难
- 创建结构的数组时遇到分段错误
- 代码在我的计算机上运行良好,但是在将其提交给coursera时遇到未知的信号11问题
- 为什么我遇到分段错误?
- 在顶点着色器中使用 OpenGl 的未声明标识符,我在顶点着色器中绘制三角形时遇到问题
- 这些是什么样的错误?即使我不在 Linux 上工作,我也遇到了 Linux 错误
- 为什么我在尝试模板时遇到视觉工作室C++错误
- 如何从文本文件中读取数值,直到遇到字符类型?
- 从其他类访问类时遇到问题
- 我已经阅读了很多关于 2d 数组的信息,但我在作业中使用它时遇到了麻烦
- 打印问题.我在数组中打印值时遇到一些问题
- 使用静态成员声明类时遇到问题
- 为什么我在插入地图时遇到 seg 错误
- 在wininet ftp程序中遇到seg错误
- 为什么我在此功能中遇到 seg 错误