您的位置:首页 > 运维架构 > Linux

map类的erase方法的在Linux与Windows中的差异

2014-01-20 17:29 323 查看
这次的代码是跨平台的,尼玛在win32上通过,但是在linux上不通过了,查找了一下原来是平台linux不支持。
有人举了例子:

for
(itr = i_f_map.begin(); itr != i_f_map.end(); ){

if(itr->first == 12){
map<int,float>::iterator
tempitr = itr++;
i_f_map.erase(tempitr);
}else{
itr++;
}
}

尤其是在嵌套容器中,容器里再嵌套容器,就很有可能出现itr是非法的,导致itr != i_f_map.end()条件不能被判断出来。

所以我建议大家使用下边的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: