相关疑难解决方法(0)

从std :: vector中删除,同时为每个执行a?

迭代的正确方法是使用迭代器.但是,我认为通过擦除,迭代器无效.

基本上我想做的是:

for(iterator it = begin; it != end; ++it)
{
    if(it->somecondition() )
    {
     erase it
    }

}
Run Code Online (Sandbox Code Playgroud)

没有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());

}
Run Code Online (Sandbox Code Playgroud)

c++ vector

28
推荐指数
1
解决办法
9439
查看次数

标签 统计

c++ ×1

vector ×1