如何动态从向量中删除c ++中指向对象的指针?

勒丸

好吧,所以我在做这个游戏时就像一个有3个不同对象的项目。

void Character::shoot(){
  Shot* s = new Shot(blablabla);
  shots.push_back(s);
}

这是动态发生的,目前我不删除指针,因此过一会儿它必须是指向该向量中镜头的指针的负载。

我使用Bot,Character和Shot,并且如我所说,我需要动态存储(最好从向量中)指向和删除指向该快照的指针的帮助。我已经像将所有拍摄对象都放在矢量中一样工作了,但是它们从未从那里消失。当它们与某物碰撞或超出屏幕宽度时,我想将其从程序中永久删除。

拉克斯万

您可以在任何标准容器上使用std::removestd::erase来删除内容:

Shot* to_be_removed = ...;
std::vector<Shot*>::iterator i = std::remove(shots.begin(),shots.end(),to_be_removed);
std::erase(i,shots.end());
delete (to_be_removed);//don't forget to delete the pointer

当您知道要删除的元素时,此方法有效。如果您不知道该元素,则必须找到一种方法来标识要删除的元素。同样,如果您有一个系统来标识元素,那么使用容器迭代器进行删除可能会更容易:

std::vector<Shot*>::iterator i = ...;//iterator the the element you want to remove
delete (*i);//delete memory
shots.erase(i);//remove it from vector

最后,如果您想从容器中删除所有指针并同时删除所有项目,则可以使用 std::for_each

//c++ 03 standard:
void functor(Shot* s)
{
    delete(s);
}

std::for_each(shots.begin(),shots.end(),functor);
shots.clear();//empty the list

//or c++11 standard:
std::for_each(shots.begin(),shots.end(),[] (Shot * s){ delete(s); } );
//the rest is the same

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何动态从向量中删除c ++中指向对象的指针?

来自分类Dev

C++中指向对象/对象的指针的堆内存分配

来自分类Dev

如何知道C ++中指针指向的对象类型?

来自分类Dev

什么是C语言中指向对象类型的指针?

来自分类Dev

删除指针向量中的指针指向的对象

来自分类Dev

在C中指向字符的指针指向什么?

来自分类Dev

在C中指向字符的指针指向什么?

来自分类Dev

指向对象的指针向量C ++

来自分类Dev

修改C ++函数中指针指向的位置

来自分类Dev

更改C ++中指针指向的地址

来自分类Dev

C ++中指向数据成员的指针的值

来自分类Dev

获取C ++中指针指向的变量的名称

来自分类Dev

当向量在内部类中时,如何删除指向对象的向量指针

来自分类Dev

查找并返回指向向量中对象的指针

来自分类Dev

删除c ++中指针数组的每个元素指向的对应元素

来自分类Dev

删除指向对象的指针的指针数组

来自分类Dev

指向对象错误的指针C ++

来自分类Dev

如何从指向指针数组的指针中删除对象?

来自分类Dev

如何删除指向动态分配对象的指针数组

来自分类Dev

C++ 删除指向动态分配对象的指针

来自分类Dev

为什么在Objective-C中指向ivar的指针不好?

来自分类Dev

C语言中指向结构和内存分配的指针

来自分类Dev

C语言中指向char的指针的默认值

来自分类Dev

C中指向结构的指针的Free()函数未编译

来自分类Dev

在C ++中指向结构数组的指针有麻烦

来自分类Dev

C语言中指向常量的指针的奇怪行为

来自分类Dev

指向C ++中对象数组的指针

来自分类Dev

指向C ++中对象属性的指针

来自分类Dev

如何删除向量中存储的对象的指针?

Related 相关文章

热门标签

归档