I've learned that dynamic arrays, such as `std::vector`, double their capacity when their capacity is reached to make the `push_back` operation O(1) amortized time.

However, why is this needed in the first place? Isn't allocating space for one element at the end of the `vector` and copying the new element there already O(1)?