Arrays are prehistoric, consider std::vector.std::vector has its disadvantages, though.
You'll rarely ever use an array again.
For example, if you have a pointer to an element, and then you add new
elements to the vector, your pointer might get invalidated (or not,
there's no way of knowing). Also the memory usage of std::vector might
not alway be optimal, especially if you are constantly adding new
individual elements to it.
In this respect std::deque is better: Adding elements (at the
beginning or the end) doesn't invalidate pointers pointing to existing
elements, and the memory usage is often better in the latter situation.
(OTOH the memory is not contiguous.)