【发布时间】:2011-08-28 23:52:07
【问题描述】:
我有一个对象的 std::vector,我循环调用对象的一些方法。其中之一将检查特定条件,如果需要,将从向量中删除其自身。关键是擦除元素会使迭代器无效,我无法继续它的循环。我找到了 boost::shared_ptr 和 boost::weak_ptr,它们可以解决在调用所有方法和递增迭代器后删除对象的问题吗?如果有,怎么做?
编辑 1
class CPippo
{
public:
void Pippo();
void Pippo2();
}
class CPippoManager
{
public:
void PipppManager();
void RemovePippo(CPippo *pippo);
private:
std::vector<CPippo*> pippoVector;
}
void CPippo::Pippo()
{
...
if (condition)
{
pippoManager->RemovePippo(this);
}
}
void CPippo::Pippo2()
{
...
}
void CPippoManager::RemovePippo(CPippo *pippo)
{
this->pippoVector.erase(this->pippoVector.begin(), this->pippoVector.end(), pippo);
}
void CPippoManager::PipppManager()
{
for (std::vector<CPippo*>::iterator it = this->pippoVector.begin(); it != this->pippoVector.end; ++it)
{
(*it)->Pippo();
(*it)->Pippo2();
}
}
【问题讨论】:
标签: c++ boost vector shared-ptr