首页 > 代码库 > 删除元素注意事项
删除元素注意事项
一、vector、list
正确版本:
for(auto iter = a.begin(); iter != a.end(); )
{
if(*iter > 30)
{
iter = a.erase(iter);
}
else
{
iter++;
}
}
错误版本:
for(auto iter = a.begin(); iter != a.end(); ++iter)
{
if(*iter > 30)
{
a.erase(iter);
}
}
二、map
删除map的元素,不能是 map[key]=NULL
这种做法没有删除<key,value>对,而改成了<key,NULL>
只能是
iterator it=map.find(key);
if(it!=map.end())
map.erase(it);
遍历删除问题:
正确版本:
for(;iter!=mapStudent.end();)
{
if((iter->second)>=aa)
{
//满足删除条件,删除当前结点,并指向下面一个结点
mapStudent.erase(iter++);
}
else
{
//条件不满足,指向下面一个结点
iter++;
}
}
错误版本:
for(map<string, string>::iterator i = mapData.begin(); i != mapData.end(); ++i)
{
if(i->first == "b")
{
mapData.erase(i);
}
}
删除元素注意事项
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。