使用相同的向量而不使用resize()部分

时间:2015-05-04 06:26:51

标签: c++ vector push-back

我对std::vector -

有疑问
vector<int> vec(1,0);

while(//something_1)
{
    while(//something_2)
    {
       ...
       vec.pushback(var)
       ...
    }

    process(vec.size()); //every iteration- different size

    vec.clear();
    vec.resize(0,0);
}

在这种情况下 - 每vec.push_back(var)重新分配一个新数组,其大小比前一个数组大一点。

我的问题是 - 如果有一种方法使用一个向量,那么在内部while(//something_2)之后,vec.push_back(var)命令将从vec的第一个单元格推回?而不是使用vec.clear()vec.resize(0,0)?所以我可以保存调整大小部分和重新分配。

向量的大小对函数process(vec.size())

很重要

感谢。

1 个答案:

答案 0 :(得分:3)

如果事先知道你的矢量可以增长多少,你可以第一次使用reserve

clear Leaves the capacity() of the vector unchanged.这意味着push_back&amp;和其他修饰符将使用相同的内存。

resize(0,0)应该删除。