可変数のエージェントを維持する必要がある C++ で記述されたシミュレーションがあり、それを適切に実装する方法を決定するのに苦労しています。すべてのエージェントは次のようになります。
class Agent{
public:
Vector2f pos;
float health;
float data[DATASIZE];
vector<Rule> rules;
}
次のように、シミュレーションで可変数のエージェントを維持する必要があります。
- エージェントの数に上限がないことが望ましい
- エージェントを簡単に追加できます
- ある条件下 (健康状態が 0 未満など) でエージェントを簡単に削除できます。
- すべてのエージェントを簡単に反復して何かを実行できます (健康など)。
- 多くの更新は多少コストがかかりますが、他のエージェントから完全に独立しているため、できれば openMP を使用して作業を並列化できます。
- (編集) エージェントの順序はまったく関係ありません
エージェントにはどのようなコンテナまたは設計原則を使用する必要がありますか? 今までベクトルを使っていましたが、この構造から消すのはかなり難しいと思います。物事は常に死ぬので、かなり頻繁に行う必要があります。私が見るべき代替手段はありますか?Listのようなものを考えたのですが、イテレータオブジェクトで連結リストとして実装されているので並列化できないのでしょうか?
ありがとうございました