Правильный способ итерации - использовать итераторы. Однако, я думаю, что, стирая, итератор недействителен.
В основном, что я хочу сделать:
for(iterator it = begin; it != end; ++it)
{
if(it->somecondition() )
{
erase it
}
}
Как я мог сделать это без метода v [i]?
Спасибо
struct RemoveTimedEvent
{
bool operator()(const AguiTimedEvent& pX, AguiWidgetBase* widget) const
{
return pX.getCaller() == widget;
}
};
void AguiWidgetContainer::clearTimedEvents( AguiWidgetBase* widget )
{
std::vector<AguiTimedEvent>::iterator it = std::remove_if(timedEvents.begin(),
timedEvents.end(), RemoveTimedEvent());
timedEvents.erase(it, timedEvents.end());
}