Actually, I think the standard is to increase the size of the vector by a factor less than or equal to the golden ratio.
gcc, unfortunately, doubles it, which can lead to memory fragmentation.
This is why you should use the reserve member function before pushing data into an empty vector, if you can. If you have some reasonable idea as to how large the vector might grow then you should reserve some memory for elements. This way the size can grow or shrink until the capacity is reached.
People sometimes worry about the cost of std::vector growing incrementally. I used to worry about that and used reserve() to optimize the growth. After measuring my code and repeatedly having trouble finding the performance benefits of reserve() in real programs, I stopped using it except where it is needed to avoid iterator invalidation (a rare case in my code). Again: measure before you optimize.
An even better idea is to use the right container for the job. These questions usually help in the simple case:
Do the elements have to be contiguous in memory?
Do you need random access to the elements?
A vector stores its elements contiguously, which is why it resizes when enough elements are inserted, and provides random access.
A deque provides random access, but does not store elements contiguously.
A list does not provide either random access nor does it store elements contiguously.
Those descriptions should be helpful but realize that they are certainly not comprehensive. A good book on the STL is a valuable investment for C++ developers.