我有一个类型的向量,它有两个函数,setSucceeed()和setFailed() . 调用setFailed导致一些工作正在完成,然后该对象被破坏 . 我需要迭代这个向量,并根据外部条件为每个元素调用其中一个函数 . 这是我在此代码中的初始传递:

void F(bool success)
{
    for (vector<t>::iterator i = myVector.begin(); i != myVector.end(); ++i)
    {
        if (success)
        {
            (*i)->setSucceeded();
        }
        else
        {
            (*i)->setFailed();
        }
    }
    myVector.clear();
}

当成功== true时,这很好 . 但是,当它为false时,第一次调用setFailed后,* i被破坏,&i变为0xdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd失败:“矢量迭代器不可递增” . 这是合理的,因为我是一个空指针,所以它不能递增 . 无论如何,这是我对正在发生的事情的理解 .

我在所有向量元素上调用setFailed的最佳方法是什么?我不应该提到,我不拥有类型t或setSucceeded和setFailed的定义 .