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
On 4. Jan 2021, at 19:45, Mehrdad Niknami
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/d...
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost