Прежде всего, не путайте size()
и capacity()
.
size()
дает количество элементов, содержащихся в векторе.
capacity()
дает текущее количество зарезервированных слотов памяти (сколько элементов умещается в памяти, которую вектор зарезервировал). Емкость всегда равна или больше, чем размер.
Теперь vector<int> vec(1000);
создает вектор размера 1000, поэтому добавление одного элемента даст вам вектор размером 1001.
Емкость, с другой стороны, автоматически обрабатывается вектором, и то, как, зависит от реализации. Типичный способ сделать это - удвоить емкость всякий раз, когда вектор должен расти, поэтому, по сути, среднее время для добавления новых элементов остается постоянным, независимо от количества элементов в векторе.