Стандарт не говорит, но вы можете сами узнать, что у вас в системе:
vector<int> v;
cout << v.capacity() << endl;
v.reserve(100);
cout << v.capacity() << endl;
Это дает мне 0
и 100
на VS2008 - т.е. начальный вектор ничего не выделил.
РЕДАКТИРОВАТЬ: удалены ошибочные советы.
EDIT2: маленький эксперимент, потому что мне было любопытно ...
vector<int> w;
for (int i=0; i<100000; i++)
{
if (i == w.capacity())
cout << i << ", ";
w.push_back(i);
}
Выход:
0, 1, 2, 3, 4, 6, 9, 13, 19, 28, 42, 63, 94, 141, 211, 316, 474, 711, 1066,
1599, 2398, 3597, 5395, 8092, 12138, 18207, 27310, 40965, 61447, 92170,