我有一个可能会出现在多个列表中的对象。
例如
std::list<object*> lista = new std::list<object*>();
std::list<object*> listb = new std::list<object*>();
object* obj = new object();
lista->push_front(obj);
listb->push_front(obj);
潜在地,有许多对象将以相同的方式出现在两个列表中。我意识到智能指针会很容易做到,但称我为受虐狂——我更愿意弄清楚如何在没有它的情况下做到这一点。
目前,我正在尝试这种技术:
td::list<object*>::iterator iter;
for(iter = lista->begin(); iter != lista->end(); iter++) {
delete (*iter);
*iter = 0;
}
std::list<object*>::iterator iterB;
for(iterB = listb->begin(); iterB != listb->end(); iterB++) {
if(*iterB != 0) {
delete (*iterB);
*iter = 0;
}
}
delete lista;
delete listb;
但它delete lista;
在运行时中断了我的等价物。希望那里的指针更聪明的人可以帮助我。提前致谢!
PS 我正在运行 Windows 7/MinGW。