|
|
| How bad is a goto statement? |
|
TeamTerradactyl
Member #7,733
September 2006
|
FMC said:
for (fl = snow.begin(); fl!=snow.end(); fl++) { if (fl->dead()) { snow.erase(fl); fl--; // <-- I think this is invalid } }
If I'm not mistaken, the vector iterator only has the ++ operator defined; not the --, so you could not decrement your current position... You got C++? So if I got B-, I'm smarter than you? |
|
Dustin Dettmer
Member #3,935
October 2003
|
Quote:
//fl...ake is a vector iterator of the same type as snow Is this wrong or bug prone? Yes. This is what you want to do. //fl...ake is a vector iterator of the same type as snow //snow is a vector for(fl = snow.begin(); fl!=snow.end(); ){ if(fl->dead()){ fl = snow.erase(fl); } else fl++; }
|
|
Bob
Free Market Evangelist
September 2000
|
How about this? snow.erase(std::remove_if(snow.begin(), snow.end(), std::mem_fun(&snow_type::dead)), snow.end()); (Untested code) -- |
|
Dustin Dettmer
Member #3,935
October 2003
|
Cool |
|
FMC
Member #4,431
March 2004
|
Thanks for the head-ups! [FMC Studios] - [Caries Field] - [Ctris] - [Pman] - [Chess for allegroites] |
|
|
|