我是iOS开发人员,我不熟悉C ++。所以,我无法理解为什么用clear()方法无法删除imageMap的内容?
struct ImageNode
{
string key;
UIImage *image;(UIImage is a class in Objective-C)
};
struct ImagePointer
{
list<ImageNode *>::iterator it;
bool isLRUQueue;
};
list<ImageNode *> FIFOQueue;
list<ImageNode *> LRUQueue;
map<string, ImagePointer *> imageMap;
//clear method
- (void)clear
{
//why need for loop???
for (auto it = imageMap.begin(); it != imageMap.end(); it++)
{
delete *it->second->it;
delete it->second;
}
FIFOQueue.clear();
LRUQueue.clear();
imageMap.clear();
}
答案 0 :(得分:0)
我无法理解为什么不能通过clear()删除imageMap的内容
考虑到即使你在列表中存储指针,也不意味着当你从列表中删除指针时要删除它们:
std::list<int*> l;
int i;
l.push_back(&i);
l.clear; // if list deleted the pointer contained within the list
// then bad things would happen
std::list
无法读懂您的想法,无法知道您是否要删除指针。 您必须在需要删除时删除指针。 Clear只会从列表中删除元素。