From 5f62214ad5adcce6b8b34a8fd4afb6e8bb4715a4 Mon Sep 17 00:00:00 2001 From: Gennaro Prota Date: Thu, 18 Sep 2025 16:40:47 +0200 Subject: [PATCH] Make push_back() more efficient --- include/boost/dynamic_bitset/impl/dynamic_bitset.ipp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/include/boost/dynamic_bitset/impl/dynamic_bitset.ipp b/include/boost/dynamic_bitset/impl/dynamic_bitset.ipp index d2b5a4d..e7d2b8f 100644 --- a/include/boost/dynamic_bitset/impl/dynamic_bitset.ipp +++ b/include/boost/dynamic_bitset/impl/dynamic_bitset.ipp @@ -750,8 +750,13 @@ void dynamic_bitset< Block, AllocatorOrContainer >:: push_back( bool bit ) { - const size_type sz = size(); - resize( sz + 1, bit ); + const int extra_bits = count_extra_bits(); + if ( extra_bits == 0 ) { + m_bits.push_back( Block( bit ) ); + } else { + m_bits.back() |= ( Block( bit ) << extra_bits ); + } + ++ m_num_bits; } template< typename Block, typename AllocatorOrContainer >