我在列表中保存了一些对象,例如:
list<CWorm*> wormList;
我将蠕虫放在其构造函数的此列表中:
CWorm::CWorm(list<CWorm*>& list, [...]) {
list.push_back(this);
在主循环中,我为此执行一些事件:
for(itt = wormList.begin(); itt != wormList.end(); itt++) {
if( (*itt) != NULL ) (*itt)->someEventBlabla();
}
这是我的问题:
如何有效地将它们从列表中删除。当它们死掉时,我试图从列表中“擦除”它们(在检查变量后在主循环中),但是它给出了不可引用的迭代器错误。
当我尝试从列表中“删除”它们时(在对象中,在主循环执行的情况下),在这一行中有一个错误:
if( (*itt) != NULL ) (*itt)->someEventBlabla();
我试图这样删除它们:
wormList.remove(this)
从一个对象事件开始,将wormList声明为extern
如何删除它们,为下一个对象留出空白?
最佳答案
好吧,也许您应该在这里使用某种智能指针。但是通常你想做这样的事情
using namespace std;
wormList.erase(remove_if( wormList.begin(), wormList.end(), bind1st(equal_to<CWorm*>(), NULL) ), wormList.end() );
关于c++ - 从包含对象指针的列表中删除,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13670355/