我有一个类型的向量,它有两个函数,setSucceed() 和 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 时,这工作正常。但是,当它为假时,在第一次调用 setFailed 后,*i 被破坏,&i 变为 0xdddddddddddddddd(这是某种空指针吗?),所以当循环继续时(特别是在 ++i 处),我得到断言失败:“向量迭代器不可递增”。这是合理的,因为 i 是一个空指针,所以它不能递增。这就是我对正在发生的事情的理解。
对我的所有矢量元素调用 setFailed 的最佳方法是什么?我应该提一下,不幸的是,我不拥有类型 t 或 setSucceeded 和 setFailed 的定义。