我只是c ++的初学者。 在我的程序中,我使用矢量push_back并多次执行此过程.i还在使用push_back后打印矢量容量。 输出显示向量的容量直接从2增加到4然后从4增加到8.这是它的工作方式,或者容量假设每次增加1。 我有这个疑问,因为在我查看作者输出的一个教程中,向量显示向量的容量增加了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)
提前致谢。
答案 0 :(得分:2)
容量应该增加,使得矢量可以容纳足够的元素。具体如何完成取决于实现。