gpt4 book ai didi

c++ - 管理 vector 中的实体

转载 作者:行者123 更新时间:2023-11-30 03:59:05 25 4
gpt4 key购买 nike

我有一个 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/

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