...one of the most highly
regarded and expertly designed C++ library projects in the
world. — Herb Sutter and Andrei
devector's insertion logic has been reimplemented to move elements to the center of the devector if an insertion at one end has no free capacity but there is free capacity on the other end. Current implementation keeps reallocating memory when only inserting at one end and poping from the other, provoking very high memory usage. The new strategy is based on the article Double-ended vector - is it useful? by Lars Greger Nordland Hagen.
boost/container/vector.hpppreprocessed file size reduces from 1,5MB to 930KB. If you still want to use standard exception classes, you can define
BOOST_CONTAINER_USE_STD_EXCEPTIONSbefore using any Boost.Container class.
std::pair; works when using a
equal_rangecan result in a range with length greater than 1".
dequecan now have options, using
deque_options. The block size/bytes can be be specified.
static_vectorcan now have options, using
static_vector_options. Alignment and throwing behaviour can be be specified.
small_vectorcan now have options, using
small_vector_options. Alignment and growth factor can be be specified.
voidto reduce symbol lenghts.
contains()for associative containers as specified in P0458R2: Checking for Existence of an Element in Associative Containers.
adaptive_pooland many parameters are now compile-time constants instead of runtime constants.
unsynchronized_pool_resourcefound by Arthur O'Dowyer in his blog post <memory_resource> for libc++
release()the original buffer is recovered for the next allocation.
vector_options. The growth factor and the stored size type can be specified.
adopt_sequencefunctions for flat_[multi]map/set associative containers.
static_vector<>::static_capacityto use the configured capacity in constant expressions.
boost::container::small_vectorsupports more constructors and assignments.
index_offunctions to containers with random-access iterators (except
propagate_on_container_swapare no longer
::boost::integral_constant<bool, true/false>types. The dependency reorganization needed to break with those classes to avoid MPL dependencies, and interoperability with
std::integral_constantwas not guaranteed. Code assumming
boost::true_type/boost::false_typeon this will not compile. As a workaround, use the guaranteed internal
initializer_list. Contributed by Robert Matusewicz.
static_vectorclass, based on Andrew Hundt's and Adam Wulkiewicz's high performance
vectorconstructors/copy/move/swap, dispatching to memcpy when possible.
vector's insertion performance.
stable_vector's template code bloat and type safety.