C++:删除map元素,当value值为指针时,如何释放内存。
2012-08-13 16:24
495 查看
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是为了防止迭代器失效。
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元素,当value值为指针时,如何释放内存。
- C++:在遍历/循环中删除map元素, 如何避免iter 迭代器失效
- C++:在遍历/循环中删除map元素, 如何避免iter 迭代器失效
- C++如何删除map容器中指定值的元素详解
- vector中删除元素后,如何有效的释放无效元素的内存
- c++如何遍历删除map/vector里面的元素
- Java如何在List或Map遍历过程中删除元素
- C++ STL遍历map的时候如何删除其中的element
- C++中如何按照map中的value来进行排序
- 指针参数是如何传递内存的? (C++ 高质量)
- [C/C++][经典探讨]类继承中,通过基类指针delete释放,是否会造成内存泄漏
- 【c++】指针参数是如何传递内存的
- c/c++多级指针的内存申请和释放
- c/c++中指针参数如何传递内存
- C++遍历中删除std::hash_map元素问题
- C++遍历中删除std::map元素
- C++基类指针指向的派生类对象内存的释放
- STL:map的使用:删除map中指定值为value的所有元素
- 高质量c++(指针参数是如何传递内存的?)
- C++ vector中指针元素内存处理