У меня есть симуляция, написанная на C++, в которой мне нужно поддерживать переменное количество агентов, и мне трудно решить, как ее реализовать. Каждый агент выглядит примерно так:
class Agent{
public:
Vector2f pos;
float health;
float data[DATASIZE];
vector<Rule> rules;
}
Мне нужно поддерживать переменное количество агентов в моей симуляции, чтобы:
- Желательно, чтобы количество агентов не ограничивалось сверху.
- Я могу легко добавить агента
- Я могу легко удалить любого агента при некоторых условиях (скажем, здоровье‹0)
- Я могу легко перебрать всех агентов и что-то сделать (скажем, здоровье--)
- Желательно распараллелить работу с помощью openMP, т.к. многие обновления несколько затратны, но совершенно не зависят от других агентов.
- (редактировать) порядок агентов вообще не имеет значения
Какие контейнеры или принципы проектирования следует использовать для агентов? До сих пор я использовал вектор, но я думаю, что его довольно сложно стереть из этой структуры: что-то, что мне нужно делать довольно часто, так как вещи постоянно умирают. Есть ли альтернативы, на которые я должен обратить внимание? Я думал о чем-то вроде списка, но я не думаю, что их можно распараллелить, потому что они реализованы как связанные списки с объектами итераторов?
Спасибо
std::vector
. - person Sam Miller   schedule 30.08.2010