C++标准似乎让有关能力的副作用通过或者没有声明
resize(n),与n < size(),或clear().
它确实作出了关于摊销成本push_back和pop_back- O(1)的声明
我可以设想一种实现通常的容量变化和CLRS算法(例如,放大时加倍,减少时减半size to < capacity()/4).(Cormen Lieserson Rivest Stein)
有没有人参考任何实施限制?
鉴于a std::vector,其大小和容量可以是任意的,将其大小更改为0并将容量更改为至少N(给定数量)的最佳做法是什么?
我的直接想法是:
void f(vector<int> &t, int N)
{
t.clear();
t.reserve(N);
}
Run Code Online (Sandbox Code Playgroud)
但我注意到了
不能保证重新分配,并且不保证向量容量会改变(当调用std :: vector :: clear时).
所以我想知道当原始容量大于给定的N时,如何避免重新分配?