gpt4 book ai didi

c++ - std::vector resize(0) 或 clear() - 但保持其容量

转载 作者:可可西里 更新时间:2023-11-01 18:26:12 24 4
gpt4 key购买 nike

我正在将许多对象合并到一个包含渲染数据(网格)的 vector 中。这个 vector 在每一帧都被清除和重新填充(好吧,几乎)。

问题是,在我的例子中,清除然后再次保留 vector 大小对性能有巨大影响,因为 clear() 也可能改变容量。

换句话说,我需要控制 vector 的容量何时发生变化。我想保留旧容量一段时间,直到我自己决定是时候改变它了。

我看到两个选项:

  • 弄清楚如何控制 std::vector 的容量何时发生变化
  • 为大型内存对象实现内存池,这将获取 <= 所需大小的大型数据对象,并根据需要重用/释放它。

更新

此外,如果调用 resize(10),然后又调用了 resize(5) 会怎么样(只是为了说明,将实际数字乘以几百万)?

稍后调用 resize(5) 是否会导致 vector 重新分配?

最佳答案

实际上,clear 成员函数保持 vector 容量不变。它只销毁(调用析构函数)每个 vector 元素并将 vector 大小设置为 0。

在这种情况下,在每次迭代中,我会调用 clear() 来销毁所有 vector 元素,然后调用成员函数 reserve(size),其中,在 vector 容量太小的情况下,会将其增加到至少 size

关于c++ - std::vector resize(0) 或 clear() - 但保持其容量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42841214/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com