1 Sep
2009
1 Sep
'09
12:56 a.m.
Richard Hadsell wrote:
I use one of these 2 ways:
for (my_map_t::iterator it= my_map.begin(); it != end; ) { if (is_to_be_removed(it->first)) it = global_map.erase (it); else ++it; }
for (my_map_t::iterator it= my_map.begin(); it != end; ) { my_map_t::iterator itx = it++; if (is_to_be_removed(itx->first)) global_map.erase (itx); }
I should add that the second way is useful, when you are not executing 'erase' but rather some arbitrary code that may or may not actually erase the element from the container.
nod I can't resist pointing out Scott Meyers's "Effective STL," Item 9, p. 43: "Choose carefully among erasing options." :-)