class A { ··· ···};
map< string, A* > stoaMap;
1)通过迭代器遍历删除
map< string,A* >::iterator iter = stoaMap.begin();
while(iter != stoaMap.end()) //#1
{
//注意要先释放内存,在删除map元素,顺序不能颠倒。
//释放内存
delete iter->second;
iter->second = NULL;
//删除map元素
stoaMap.erase(iter++); //#1
}
注:#1是为了防止迭代器失效。

本文介绍了一种在C++中如何安全地遍历并删除map中的元素的方法。特别强调了正确顺序的重要性:首先释放内存,然后删除map中的对应项,避免迭代器失效。
2万+

被折叠的 条评论
为什么被折叠?



