2015-05-04 72 views
1

我有一个关于vectors-使用相同的载体,而不调整大小()部分

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.pushback(var)有一个与大小由一个比前者大数组新的数组的重新分配问题。

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

矢量的大小是该函数process(vec.size())

由于重要。

+6

如果是这样的话,那么你的'矢量'实现是可怕的破碎。 'push_back'应该使其成倍增长,并且不应该在'clear'之后重新分配,直到它增长到超出其容量(这将至少与旧的大小一样大)。你怎么确定它为每个'push_back'增长一个? –

回答

3

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

clearLeaves the capacity() of the vector unchanged.这意味着push_back &和其他修改器将使用相同的内存。

resize(0,0)应该被删除。

相关问题