я просто новичок в с++. В моей программе я использую вектор push_back и прохожу этот процесс много раз. Я также печатаю векторную емкость после использования push_back. вывод показывает, что емкость вектора увеличивается непосредственно с 2 до 4, а затем с 4 до 8. Это так работает или емкость должна увеличиваться на 1 каждый раз. У меня было это сомнение, потому что в одном из уроков, которые я просматривал, вывод авторов показал, что емкость вектора увеличивается на единицу, а не на степень 2.
#include<iostream>
#include<vector>
void printStack(const std::vector<int> &stack)
{
for (const auto &element : stack)
std::cout << element << ' ';
std::cout << "(cap " << stack.capacity() << " size " << stack.size() << ")\n";
}
int main()
{
std::vector<int> stack;
printStack(stack);
stack.push_back(5); // push_back() pushes an element on the stack
printStack(stack);
stack.push_back(3);
printStack(stack);
stack.push_back(2);
printStack(stack);
printStack(stack);
stack.push_back(5); // push_back() pushes an element on the stack
printStack(stack);
stack.push_back(3);
printStack(stack);
stack.push_back(2);
printStack(stack);
return 0;
}
Вывод: – (колпачок 0, размер 0)
5 (кепка 1 размер 1)
5 3 (крышка 2 размер 2)
5 3 2 (крышка 4 размер 3)
5 3 2 (крышка 4 размер 3)
5 3 2 5 (крышка 4 размер 4)
5 3 2 5 3 (крышка 8 размер 5)
5 3 2 5 3 2 (крышка 8 размер 6)
Заранее спасибо.
push_back()
и уже находитесь вcapacity()
, вектор увеличивает свою емкость на некоторую величину, чтобы избежать другого распределения при следующем вызовеpush_back()
. Фактор роста 2 довольно распространен, хотя меньшие факторы (~ 1,5) могут работать лучше. - person Andrew   schedule 18.05.2016