+2  A: 

Change the pos iterator into an index instead, and use that.

size_t index = pos - begin();
// do resize
pos = begin() + index;

If you're worried about iterators invalidating in general, don't. It's unavoidable, at least in this style of dynamic array, and std::vector works exactly the same.

Peter Alexander
Thank you for the reply, Peter. Are you saying that instead of iterating through the Array, I should use indexing?
Lord_Dizzie
@user465367: You could do this, or you could just "store" the iterator as an index before reallocation and then "restore" it to an iterator before performing the actual insertion. Whatever you prefer.
Charles Bailey
@user: See my edit.
Peter Alexander
Sir, you are a Saint. Thank you very much.
Lord_Dizzie