Erase in a map
- From: Charles Zhang <CharlesZhang@xxxxxxxxxxxxxxxxx>
- Date: Fri, 16 Mar 2007 10:35:04 -0700
I want to erase items in a map based on some criteria. However, as soon as the erase is called, iterator become invalid. I would like someone to tell me the better way to do it.
Here is the source code I am using, and it is crashing.
for ( pos = connectionMap.begin(); pos != connectionMap.end(); ++pos){
ConnectionInfo* conn = pos->second;
if ( current - conn->lastRequestTime > 60 * timeOut ) {
connectionMap.erase(pos);
}
}
To overcome the problem, I start the loop from the beginning after a item is removed. But this is too slow.
Thanks
Charles Zhang
.
- Follow-Ups:
- Re: Erase in a map
- From: Ulrich Eckhardt
- Re: Erase in a map
- From: freak
- Re: Erase in a map
- From: aao
- Re: Erase in a map
- Prev by Date: Re: map.find doesn't find
- Next by Date: Re: Erase in a map
- Previous by thread: Strange ostringstream behaviour in Visual C++ 2005
- Next by thread: Re: Erase in a map
- Index(es):