我有以下代码:
//update it in the map
std::map<std::string, std::string>::iterator it;
for(it = spreadsheets.at(i).cells.begin(); it != spreadsheets.at(i).cells.end(); ++it)
{
if(it->first == change.first)
{
if(change.second == "")
{
spreadsheets.at(i).cells.erase(change.first);
}
else
{
it->second = change.second;
}
}
}
上面的代码在我的 mac 上完美运行,但是当我在 linux 计算机上运行时,它会抛出一个 seg 错误spreadsheets.at(i).cells.erase(change.first);
知道是什么导致了这个错误吗?我试过改成erase(change.first)
,erase(it)
但我仍然遇到段错误。