相关疑难解决方法(0)

std :: vector向下调整大小

C++标准似乎让有关能力的副作用通过或者没有声明 resize(n),与n < size(),或clear().

它确实作出了关于摊销成本push_backpop_back- O(1)的声明

我可以设想一种实现通常的容量变化和CLRS算法(例如,放大时加倍,减少时减半size to < capacity()/4).(Cormen Lieserson Rivest Stein)

有没有人参考任何实施限制?

c++ resize vector std stdvector

30
推荐指数
3
解决办法
2万
查看次数

使std :: vector capacity> = N和si​​ze = 0的最佳方法是什么?

鉴于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时,如何避免重新分配?

c++ vector std stdvector

6
推荐指数
1
解决办法
216
查看次数

标签 统计

c++ ×2

std ×2

stdvector ×2

vector ×2

resize ×1