n = which push_back? cap = size of array holding vaector's data num = number of data items actually in it, num <= cap wrk = number of data items copied by this push_back tot = total of all wrks so far resize vector by adding 1 to cap n 1 2 3 4 5 6 7 8 9 10 cap 0 1 2 3 4 num 0 1 2 3 4 wrk 0 1 2 3 4 tot 0 1 3 6 10 15 21 28 36 45 55 total effort is proportional to square of amount of data, = N * (N + 1) / 2 adding a number more than 1 does speed things up but it remains quadratic. resize vector by doubling cap n 1 2 3 4 5 6 7 8 9 10 ... ... ... 16 17 cap 0 1 2 4 4 8 8 8 8 16 16 32 num 0 1 2 3 4 5 6 7 8 9 wrk 0 1 2 3 1 5 1 1 1 9 1 1 1 1 1 1 1 17 tot 0 1 3 6 7 12 13 14 15 24 31 48 total effort is proportional only to amount of data, = 2 * N - 1 These calculations ignore the time taken by new and delete. If new and delete are taken into account, doubling is even better. The time an individual use of new or delete takes does not depend on the size of the array. It is variable but constant on average if you see what I mean. with adding 1 a new and delete are required at every step. adding some larger number such as six would require a new and delete for every six pushes. So the number of news and deletes is proportional to the total amount of data whenever growth is by adding. When doubling the size, news and deletes are only required at exponentially increasing intervals, after n = 1, 2, 4, 8, 16, 32, 64, etc so the total number is proportional to the logarithm of n.