Boost logo

Boost :

From: Peter Koch Larsen (peter.koch.larsen_at_[hidden])
Date: 2021-01-06 00:06:55


While I recognize the approach with geometrically allocated blocks
this makes the stationary_vector unsuitable as a deque replacement.
One of deques virtues is its ability to grow to a large size without
running out of memory. With geometric growth, a stationary_vector
will be unable to grow to more than half of available memory.

On Tue, Jan 5, 2021 at 6:23 PM Hans Dembinski via Boost
<boost_at_[hidden]> wrote:
>
>
> > On 4. Jan 2021, at 19:45, Mehrdad Niknami <mniknami_at_[hidden]> wrote:
> >
> > It's similar, but not quite. std::deque uses fixed-size blocks and tends to be slow in my experience (at least in some implementations).
> > stationary_vector on the other hand uses variably-sized blocks (with geometrically increasing sizes).
> > Its capacity at least doubles every round; in fact, it reduces to a single array when the entire size is reserved beforehand.
> > This allows it to perform much more competitively with (and similarly to) std::vector.
> > It may be what std::deque should have been, but isn't currently.
>
> Ok, that sounds like your container offers the same basic guarantees as a std::deque with a more efficient implementation. If it is indeed more efficient due to the use of variable-sized blocks than boost::container::deque, then could you include your improvements into boost::container::deque?
>
> https://github.com/boostorg/container/blob/develop/include/boost/container/deque.hpp
>
> _______________________________________________
> Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk