【发布时间】:2011-04-16 07:21:06
【问题描述】:
我正在尝试删除向量的内容,但出现错误 - 向量迭代器不可递增,这是为什么呢?
这是我的析构函数:
City::~City()
{
vector <Base*>::iterator deleteIterator;
for (deleteIterator = m_basesVector.begin() ; deleteIterator != m_basesVector.end() ; deleteIterator++)
m_basesVector.erase(deleteIterator);
}
谢谢。
【问题讨论】:
-
假设
m_basesVector是City的成员,则无需删除其元素;它的析构函数即将为你做这件事。 -
您知道这不会删除您的指针指向的对象。您必须致电
delete deleteIterator;来实现这一点(如果这是您想要的)。但是,在这种情况下,您应该更喜欢boost::ptr_vector。 -
见there。
标签: c++ memory-management vector iterator