【发布时间】:2010-08-30 19:15:41
【问题描述】:
我有一个用 C++ 编写的模拟,我需要在其中维护可变数量的代理,但我无法决定如何很好地实现它。每个代理看起来都类似于:
class Agent{
public:
Vector2f pos;
float health;
float data[DATASIZE];
vector<Rule> rules;
}
我需要在我的模拟中维护可变数量的代理,以便:
- 最好对代理的数量没有上限
- 我可以轻松添加代理
- 我可以在某些情况下轻松移除任何代理(比如健康
- 我可以轻松地迭代所有代理并做一些事情(比如健康--)
- 最好我可以使用 openMP 并行化工作,因为许多更新有点昂贵,但完全独立于其他代理。
- (编辑)代理的顺序根本不重要
我应该为代理使用什么样的容器或设计原则?到目前为止,我一直在使用矢量,但我认为很难从这个结构中删除:我需要经常做的事情,因为事情总是会死掉。有什么我应该看的替代品吗?我想到了 List 之类的东西,但我不认为它们可以并行化,因为它们是作为带有迭代器对象的链表实现的?
谢谢
【问题讨论】:
-
你分析过你的代码吗?如果没有,我还不会指责
std::vector。
标签: c++ design-patterns containers openmp multi-agent