ke****@gmail.com wrote:
i am looking for a more elegant/standard way to do this simple
operation,
however, for now, i just coded this beast. any comments will be
grateful,
ObserverMap::iterator itr = observers_.begin();
while(itr != observers_.end()){
if(itr->second == observer){
ObserverMap::iterator tmpItr = ++itr;
--itr;
observers_.erase(itr);
itr = tmpItr;
OK, maybe I'm stating the obvious here, but the above FOUR lines
can be rewritten as just one:
observers_.erase(itr++);
continue;
Drop the 'continue' and add 'else' below.
}
add
else
here.
>
++itr;
}
- minglei
IOW, you should be able to do what you need like so:
ObserverMap::iterator itr = observers_.begin();
while (itr != observers_.end()) {
if (itr->second == observer)
observers_.erase(itr++);
else
++itr;
}
How's that?
V
--
Please remove capital 'A's when replying by e-mail
I do not respond to top-posted replies, please don't ask