【发布时间】:2010-10-15 01:30:03
【问题描述】:
迭代的正确方法是使用迭代器。但是,我认为通过擦除,迭代器无效。
基本上我想做的是:
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());
}
【问题讨论】: