在pos位置中删除一个元素值为value的简单方法除了counts map<>::erase(value_type)之外的另一个实现:
for(map<>::iteratpr pos=c.begin(); pos!=c.end(); )
{
if(pos->second == value)
{
c.erase(pos++);
}
else
{
++pos;
}
}
注: pos++先返回一个pos(iterator)的副本,然后再自增。就解决了c.erase(pos)时,使得迭代器失效的可能。
for(map<>::iteratpr pos=c.begin(); pos!=c.end(); )
{
if(pos->second == value)
{
c.erase(pos++);
}
else
{
++pos;
}
}
注: pos++先返回一个pos(iterator)的副本,然后再自增。就解决了c.erase(pos)时,使得迭代器失效的可能。
本文介绍了一种在C++中使用map容器时,如何遍历并删除指定值的方法。通过迭代器检查每个元素,若其值等于目标值,则调用erase方法删除该元素,并详细解释了pos++操作确保erase调用时迭代器有效性的技巧。

466

被折叠的 条评论
为什么被折叠?



