上面的方法:
// for (AnimInstMap::iterator i = mAnimInstMap.begin(); i != mAnimInstMap.end(); ++i)
// {
// std::string* animInst = i->second;
// if(animInst)
// printf("str is %s/n", animInst->c_str());
// else
// mAnimInstMap.erase(i--);
// }
下面的方法:
for (AnimInstMap::iterator i = mAnimInstMap.begin(); i != mAnimInstMap.end(); )
{
std::string* animInst = i->second;
if(animInst){
printf("str is %s/n", animInst->c_str());
++i;
}
else{
mAnimInstMap.erase(i++);
}
}
百子哥说的就是下面的方法~我自己想的是上面的方法~
mAnimInstMap[0] = new std::string("zhao");
mAnimInstMap[1] = NULL;
mAnimInstMap[2] = new std::string("zi");
写了个这样的测试没问题~
在实际中才发现。。。错误~当map中只有一个元素~然后,我们要在update中删除这个第一位置元素
然后就当掉了。。。
百子哥说:要相信。。。