kar*_*thy 4 c++ containers design-patterns multi-agent openmp
我有一个用C++编写的模拟,我需要维护可变数量的代理,而我在确定如何很好地实现它时遇到了麻烦.每个代理看起来类似于:
class Agent{
public:
Vector2f pos;
float health;
float data[DATASIZE];
vector<Rule> rules;
}
Run Code Online (Sandbox Code Playgroud)
我需要在模拟中维护可变数量的代理,以便:
我应该为代理商使用什么样的容器或设计原则?直到现在我才使用矢量,但我认为很难从这个结构中抹去:我需要经常做的事情,因为事情总是在死.我应该看看有什么选择吗?我想过像List这样的东西,但我不认为它们可以并行化,因为它们是作为带有迭代器对象的链表实现的?
谢谢
您可以在停止时将代理留在列表中,准备重新使用.不用担心缩小容器,而是保留了矢量的好处.您可以保留一个指向死/可重用代理的单独指针堆栈,只需在代理程序死亡时将其推送到其中,然后弹出一个指针以回收新代理程序.
foreach Agent {
if (agent.health > 0) // skip dead agents
process rules
Run Code Online (Sandbox Code Playgroud)