gpt4 book ai didi

c++ - 为什么在插入 map 时出现段错误?

转载 作者:行者123 更新时间:2023-11-30 03:02:33 24 4
gpt4 key购买 nike

我正在尝试将一张 map 的内容插入到另一张 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() 方法。我试图找到与我从文件中读取的成绩相匹配的成绩,并打印与这些成绩相对应的记录。但是,插入方法给我一个段错误。有什么建议吗?

最佳答案

如果 getGrades() 返回成绩图的拷贝而不是引用,则 begin()end() 属于到 2 个不同的 map 。

你可能应该制作一个本地拷贝,并像这样简化代码:

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

关于c++ - 为什么在插入 map 时出现段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10068478/

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