我有这样的代码:
for (set<GROUP*>::iterator i = Data.m_Resulting.begin(); i != Data.m_Resulting.end();)
{
printf("Deleting %d\n", (*i)->nId);
Data.m_MpptPool.erase(i++);
}
printf("Remains in pool: %d\n", Data.m_MpptPool.size());
// Dump Pool:
for (set<GROUP*>::iterator i = Data.m_MpptPool.begin(); i != Data.m_MpptPool.end(); i++)
{
printf("\t %d\n", (*i)->nId);
}
如果在删除之前 set 中有 2 个对象,并且第一个循环删除其中一个 .size() 函数显示正确的数字 (1) 但是,打印我的 set 内容的第二个 for 循环显示两个元素那里。后来,引用这个元素会导致分段错误。这里有什么问题?