矢量容量增加

时间:2016-05-18 12:14:57

标签: c++ vector capacity

我只是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)

提前致谢。

1 个答案:

答案 0 :(得分:2)

容量应该增加,使得矢量可以容纳足够的元素。具体如何完成取决于实现。