До сих пор я использовал вектор, но я думаю, что довольно сложно стереть из этой структуры: что-то, что мне нужно делать довольно часто, потому что вещи умирают все время.
Сколько вы на самом деле ожидаете умереть за каждый шаг вашей симуляции?То, что человеку кажется «все время», все еще можно считать очень редким для компьютера.Например, если на каждом этапе вашей симуляции обрабатываются тысячи агентов, но в среднем только один агент умирает каждые несколько шагов, то смерть агента является незначительным инцидентом.С такими цифрами ваша программа тратит гораздо больше времени на обработку живых агентов, чем на мертвые агенты, и поэтому беспокоиться о производительности удаления мертвого агента может не стоить вообще.Если повышение эффективности удаления агента приведет к тому, что обычная итерация и обработка агента станут менее эффективными (хотя удаление агента является относительно редким), это, вероятно, будет плохим компромиссом.
С другой стороны, если оно великочисло агентов рождается и умирает на каждом этапе симуляции, тогда вы можете убедиться, что эти события могут быть эффективно обработаны.Так что это действительно зависит от того, с какими числами вы ожидаете иметь дело.
Мой общий совет - продолжать использовать std :: vector (при условии, что он соответствует остальной части вашего дизайна), если только вы на самом делеожидать значительного числа смертей агентов за шаг по сравнению с количеством агентов в целом.