即使不知道确切的元素数量,也可以调用QVector :: reserve吗?

时间:2018-08-09 10:35:59

标签: c++ qt vector qvector

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

在我们特定的情况下,几乎每次都会有至少几个要素的估算。估计数n的实际元素数的最坏情况范围是[1,2 * n]。 reserve还是可以提高性能,还是误判的惩罚太大?

请注意,在这种情况下,我们无法使用std::vector。我不知道QVector::reservestd::vector::reserve是否做其他事情。

1 个答案:

答案 0 :(得分:1)

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

如果您的RAM并不低(并且并不真正在意它的使用),则可以“预留”该数量以完全适合所有元素。如果不是那么大,那么性能可能会稍有改善。而且,如果向量仅填充一次,然后直接存储在某个位置而没有任何修改,则可以稍后“缩小以适合”它。

但是请注意,reserve(对于QVectorvector来说都是很错误的用法。您创建容器的唯一安全地点是不久之后。在“传入”对象(即函数参数)上调用它几乎总是错误的,并且通常会降低整体性能。