Я не могу найти ничего, что дает окончательный ответ.Мне было просто любопытно, если std :: vector перераспределяет свой внутренний массив только тогда, когда он абсолютно обязан или будет перераспределяться раньше времени в ожидании (так сказать).
Например:
std::vector<int> myVector;
for (int i = 0; i < 1000; ++i) myVector.push_back(i);
cout << myVector.size() << '\n' // Gives 1000 as expected
<< myVector.capacity() << endl; // Gives 1024 which makes sense
Если я продолжу добавлять элементы, есть ли вероятность того, что один из следующих 24 элементов, которые я добавлю, изменит емкость или будет перераспределяться только после того, как я добавлю 25-й элемент?
Примечание:
Я выполнил тест с использованием gcc 4.4.3 под Linux, но кажется, что перераспределение выполняется «по требованию», но мне было любопытно, повезло ли мне просто или что-то где-то говорило, что этоожидается поведение.