gpt4 book ai didi

c++ - 从持有对象指针的列表中删除

转载 作者:太空宇宙 更新时间:2023-11-04 14:12:13 25 4
gpt4 key购买 nike

我在列表中持有一些对象,比如这个:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com