On Thu, 10 Sep 2020 at 11:46, Andrei Golubev <andrei.golu...@qt.io> wrote:
>
> That's interesting. So the container remembers what sort of a reserve
> request I made on it, and uses
> that as the preferred size whenever the element count of the container 
> changes?
>
> Yes. Calling reserve typically means that you do not want to have extra 
> reallocations while updating the container's content (instead you allocate 
> sufficient space upfront). In case of QList, we make sure there are no 
> reallocations happening unless absolutely necessary, e.g. appending 1 element 
> when size == capacity would allocate bigger memory chunk - reservation is a 
> hint, but not an obligation. Consequently, QList's shrinking erase also does 
> not shrink when capacity is reserved.

Well, yeah - calling reserve before growing a container avoids extra
allocations. Calling reserve before removing elements
doesn't have such a "typical" effect.

Should I expect to do a reserve call with a *smaller* value than my
current size is before removing elements from
a container, in order to set a "target size"? For any standard
container, such a reserve is a complete noop because
it can't be responded to by shrinking a capacity lower than the size,
but with QList it apparently records a preferred size?
_______________________________________________
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development

Reply via email to