STL的map问题 ,谁能告诉我这段代码哪里有问题
map<int,CFriend*>::iteratorite=m_map_groupfriend.begin();for(;ite!=m_map_groupfriend....
map<int,CFriend*>::iterator ite = m_map_groupfriend.begin();
for(;ite != m_map_groupfriend.end();ite++)
{
CFriend* findFriend = ite->second;
delete findFriend;
m_map_groupfriend.erase(ite);
} 展开
for(;ite != m_map_groupfriend.end();ite++)
{
CFriend* findFriend = ite->second;
delete findFriend;
m_map_groupfriend.erase(ite);
} 展开
2个回答
展开全部
删除的时候不能这么干,有两种方法供你参考
方法1
TestMap::iterator it;
for (it = mapTest.begin(); it != mapTest.end() && !mapTest.isEmpty(); ++ it)
{
mapTest.erase(it);
}
删除后原有的迭代器在判断是态梁否end的时候会失败,一定要注意
方法2(推枝碰荐)
std::map<int,string> a;
a.insert(make_pair(1,string("1")));
a.insert(make_pair(2,string("2")));
a.insert(make_pair(3,string("3")));
a.insert(make_pair(4,string("4"帆搭运)));
std::map<int,string>::iterator it=a.begin();
while(it!=a.end())
{
cout<<it->first<<":"<<it->second<<endl;
a.erase(it++); //使用删除之前的迭代器定位下一个元素
}
方法1
TestMap::iterator it;
for (it = mapTest.begin(); it != mapTest.end() && !mapTest.isEmpty(); ++ it)
{
mapTest.erase(it);
}
删除后原有的迭代器在判断是态梁否end的时候会失败,一定要注意
方法2(推枝碰荐)
std::map<int,string> a;
a.insert(make_pair(1,string("1")));
a.insert(make_pair(2,string("2")));
a.insert(make_pair(3,string("3")));
a.insert(make_pair(4,string("4"帆搭运)));
std::map<int,string>::iterator it=a.begin();
while(it!=a.end())
{
cout<<it->first<<":"<<it->second<<endl;
a.erase(it++); //使用删除之前的迭代器定位下一个元素
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询