c++ - 管理 vector 中的实体

标签 c++ vector

我有一个 std::vector<Enemy> enemies .在 Enemy 的构造函数的末尾我做的课enemies.push_back(*this) ,虽然我不太确定这是最好的方法,也不确定为什么我需要指针,但没有它我会出错。

在析构函数期间,我想做类似的事情:

enemies.erase(std::find(enemies.begin(), enemies.end(), *this));

但这并不太好。

基本上,当一个 Enemy已实例化我希望它进入 enemies vector ,并在销毁时删除。

最佳答案

您可能需要进一步细化问题:std::vector 敌人的范围是什么?

回答问题的第一部分:敌人已被声明为 vector 而不是指向敌人的指针。这就是为什么您必须通过将“*this”作为 push_back() 调用的参数来生成引用。您实际上保留了在此 vector 中构造的所有对象的拷贝。

这是您的意图还是您的意思是它是某种注册表,即跟踪所有创建的 Enemy 对象?如果它是您想要的注册表:

请使用std::vector<Enemy*> enemies .

请尝试具体说明“效果不太好”。

我认为,如果您提供更多背景信息,人们可以给出更好的答案。

关于c++ - 管理 vector 中的实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27113878/

相关文章:

c++ - pthread_join中的 "status"到底代表什么以及如何查询

c++ - 如何将单个位写入bin文件

c++ - 关于 vector 的困惑

c++ - 为什么 vector 在重新分配时必须移动其数据成员

c++ - 对 vector 中的点进行排序以形成轮廓

c++ - 如何从可变构造函数参数构造任何对象?

C++ 通过赋值运算符深拷贝动态数组

C++整数除法

c++ - 无法使用 VS2012 链接到静态 boost 库,而动态链接工作正常

c++ - 修复 std::vector<std::vector<UC>> lum 中调用 'assign' 时出现的错误:没有匹配函数;