gpt4 book ai didi

c++ - 即使不知道元素的确切数量,也要调用 QVector::reserve 吗?

转载 作者:行者123 更新时间:2023-11-30 04:58:12 25 4
gpt4 key购买 nike

我刚刚讨论了QVector::reserve。即使您对最终大小的估计是错误的,也应该使用它吗?

在我们的特定情况下,估计几乎每次都会至少偏离几个元素。估计 n 的实际元素数量的最坏情况范围是 [1, 2*n]。 reserve 是否仍能提高性能,还是错误估计的代价太大?

请注意,我们不可能在这种情况下使用 std::vector。我不知道 QVector::reservestd::vector::reserve 是否做了不同的事情。

最佳答案

这类问题的答案通常是对其进行衡量/剖析。或者,如果它不在关键路径上,也不要打扰,因为您可能甚至不会注意到差异。

如果您的 RAM 不低(并且不太关心它的使用情况),您可以“过度保留”内存量以绝对适合所有元素。如果它不是那么大,那么它可能只是一个小的性能改进。如果您的 vector 只填充一次,然后不经任何修改就存储在某个地方,您可以稍后“收缩以适应”它。

但是请注意,reserve(QVectorvector)经常被错误使用。您称之为容器的唯一安全位置是不久您创建了容器。在“传入”对象(即函数参数)上调用它几乎总是错误的,并且通常会降低整体性能。

关于c++ - 即使不知道元素的确切数量,也要调用 QVector::reserve 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51764762/

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