Boost C++ Libraries of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards


Class template dynamic_bitset

boost::compute::dynamic_bitset — The dynamic_bitset class contains a resizable bit array.


// In header: <boost/compute/container/dynamic_bitset.hpp>

template<typename Block = ulong_, typename Alloc = buffer_allocator<Block> > 
class dynamic_bitset {
  // types
  typedef Block                     block_type;    
  typedef Alloc                     allocator_type;
  typedef vector< Block, Alloc >    container_type;
  typedef container_type::size_type size_type;     

  // construct/copy/destruct
  dynamic_bitset(size_type, command_queue &);
  dynamic_bitset(const dynamic_bitset &);
  dynamic_bitset & operator=(const dynamic_bitset &);

  // public member functions
                         bits_per_block = sizeof(block_type) *CHAR_BIT);
   BOOST_STATIC_CONSTANT(size_type, npos = static_cast< size_type >(-1));
  size_type size() const;
  size_type num_blocks() const;
  size_type max_size() const;
  bool empty() const;
  size_type count(command_queue &) const;
  void resize(size_type, command_queue &);
  void set(size_type, command_queue &);
  void set(size_type, bool, command_queue &);
  bool test(size_type, command_queue &);
  void flip(size_type, command_queue &);
  bool any(command_queue &) const;
  bool none(command_queue &) const;
  void reset(command_queue &);
  void reset(size_type, command_queue &);
  void clear();
  allocator_type get_allocator() const;


For example, to create a dynamic-bitset with space for 1000 bits on the device:

boost::compute::dynamic_bitset<> bits(1000, queue);

The Boost.Compute dynamic_bitset class provides a STL-like API and is modeled after the boost::dynamic_bitset class from Boost.

See Also:


dynamic_bitset public construct/copy/destruct

  1. dynamic_bitset(size_type size, command_queue & queue);

    Creates a new dynamic bitset with storage for size bits. Initializes all bits to zero.

  2. dynamic_bitset(const dynamic_bitset & other);
    Creates a new dynamic bitset as a copy of other.
  3. dynamic_bitset & operator=(const dynamic_bitset & other);
    Copies the data from other to *this.
  4. ~dynamic_bitset();
    Destroys the dynamic bitset.

dynamic_bitset public member functions

  1.  BOOST_STATIC_CONSTANT(size_type, 
                           bits_per_block = sizeof(block_type) *CHAR_BIT);
  2.  BOOST_STATIC_CONSTANT(size_type, npos = static_cast< size_type >(-1));
  3. size_type size() const;
    Returns the size of the dynamic bitset.
  4. size_type num_blocks() const;
    Returns the number of blocks to store the bits in the dynamic bitset.
  5. size_type max_size() const;
    Returns the maximum possible size for the dynamic bitset.
  6. bool empty() const;
    Returns true if the dynamic bitset is empty (i.e. size() == 0).
  7. size_type count(command_queue & queue) const;
    Returns the number of set bits (i.e. '1') in the bitset.
  8. void resize(size_type num_bits, command_queue & queue);

    Resizes the bitset to contain num_bits. If the new size is greater than the current size the new bits are set to zero.

  9. void set(size_type n, command_queue & queue);
    Sets the bit at position n to true.
  10. void set(size_type n, bool value, command_queue & queue);
    Sets the bit at position n to value.
  11. bool test(size_type n, command_queue & queue);
    Returns true if the bit at position n is set (i.e. '1').
  12. void flip(size_type n, command_queue & queue);
    Flips the value of the bit at position n.
  13. bool any(command_queue & queue) const;
    Returns true if any bit in the bitset is set (i.e. '1').
  14. bool none(command_queue & queue) const;
    Returns true if all of the bits in the bitset are set to zero.
  15. void reset(command_queue & queue);
    Sets all of the bits in the bitset to zero.
  16. void reset(size_type n, command_queue & queue);
    Sets the bit at position n to zero.
  17. void clear();
    Empties the bitset (e.g. resize(0)).
  18. allocator_type get_allocator() const;
    Returns the allocator used to allocate storage for the bitset.