在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)时,使得迭代器失效的可能。