在向量:Resize()和向量:Reserve()之间的选择

在向量:Resize()和向量:Reserve()之间的选择

我正在给我的a预先分配一些记忆vector成员变量下面的代码是最小的部分

class A {
  vector<string> t_Names;public:
  A () : t_Names(1000) {}};

在某个时候,如果t_Names.size()等号1000..我打算把尺寸扩大到100..如果它到达1100,再次增加100诸若此类。

我的问题是,在vector::resize()vector::reserve()..在这种情况下还有更好的选择吗?

编辑:我对t_Names..我估计它就在附近700800..但在(很少)情况下,它能长得比1000.


aluckdog
浏览 495回答 3
3回答

缥缈止盈

当您不希望在保留时初始化对象时,请保留。此外,当您调整大小时,您可能更喜欢在逻辑上区分和跟踪它的计数和它的使用计数。因此,接口中有一个行为差异-向量在保留时将表示相同数量的元素,并且在您的场景中调整大小时会有100个元素大。在这种情况下还有更好的选择吗?这完全取决于您在对抗默认行为时的目标。有些人会喜欢定制的分配器-但我们确实需要一个更好的想法,知道你想在你的程序中解决什么问题,以便向你提供更好的建议。FWIW,许多向量实现在必须增长时,只需将分配的元素数增加一倍-您是试图最小化峰值分配大小,还是试图为某个无锁程序或其他程序预留足够的空间?
打开App,查看更多内容
随时随地看视频慕课网APP