I'm interested in your way. Can you explain what do you mean with a pool?
Normally, construction and destruction isn't performance-critical. I think, the missile won't have too many attributes, probably just a few bytes. Constructing them before doesn't help because assignment is still required in order to setup a valid state, and that's rather more expensive than construction.
In most cases, memory allocation and deallocation needs far more time than constructor and destructor calls. So, what might help is a
memory pool. But that pays only out if you have got really many and really small objects (new and delete aren't implemented badly). Note that besides, a really optimized memory pool isn't easy to program and must abandon flexibility to fit a specific circumstance.
You also have to know that a std::vector allocates mostly more space than really required. So, push_back() has amortized constant complexity, only in some rare cases a reallocation is performed. Destruction is similar: The container firstly destroys each element, and then performs
one deallocation on the whole range. Hence, I guess this is the best solution for you. If you suddely got problems, you will still be able to think about it; though spending too much time on premature optimization is not worth it.