In general, you should resort to
std::vector unless you have good reasons to use other containers like
std::list or
std::deque. Simply because it is the most efficient general-purpose container, and even operations like "remove in the middle" don't pay off in alternatives except for really large container sizes -- even more so when the
swap-and-pop_back idiom is used.
For me, the main reason to use
std::list was almost always element stability (pointers remain valid), not speed of certain operations.
I thought about using a dynamic array, but the way it's set up would never allow for that many to spawn, so I'll probably keep it static for simplicity's sake until later.
That doesn't make sense. Code is not simpler with a static array -- it's more complicated because you have to track the number of actually used elements manually and introduce case differentiations. Just use
std::vector, you'll see that things will become more robust
and easier.
And don't ever use arrays again -- if you actually need statically sized containers, use
std::array, which has only advantages over plain C arrays.
Please avoid full quotes, it makes threads unreadable.