If vectors resized every time you added an element, that would be inefficient. So, they double in size(or more depending on the implementation) when they are resized. If you need to add only one more element and the vector has to resize to allow you to do that, then the resizing is inefficient in that the vector allocates more memory than is required.
I thought that the preferred way to do things was to start with an 'empty' vector and then resize as necessary, as vectors grow efficiently??