为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C++
aluckdog 2019-07-01 09:34:27
在向量: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..我估计它就在附近700到800..但在定(很少)情况下,它能长得比1000.
查看完整描述

3 回答

?
缥缈止盈

TA贡献2041条经验 获得超4个赞

当您不希望在保留时初始化对象时,请保留。此外,当您调整大小时,您可能更喜欢在逻辑上区分和跟踪它的计数和它的使用计数。因此,接口中有一个行为差异-向量在保留时将表示相同数量的元素,并且在您的场景中调整大小时会有100个元素大。

在这种情况下还有更好的选择吗?

这完全取决于您在对抗默认行为时的目标。有些人会喜欢定制的分配器-但我们确实需要一个更好的想法,知道你想在你的程序中解决什么问题,以便向你提供更好的建议。

FWIW,许多向量实现在必须增长时,只需将分配的元素数增加一倍-您是试图最小化峰值分配大小,还是试图为某个无锁程序或其他程序预留足够的空间?


查看完整回答
反对 回复 2019-07-01
  • 3 回答
  • 0 关注
  • 493 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信