BitMagic-C++
Public Types | Public Member Functions | Static Protected Member Functions | Protected Attributes
bm::bvector< Alloc >::bulk_insert_iterator Class Reference

Output iterator iterator designed to set "ON" bits based on input sequence of integers. More...

#include <bm.h>

Collaboration diagram for bm::bvector< Alloc >::bulk_insert_iterator:
Collaboration graph
[legend]

Public Types

typedef std::output_iterator_tag iterator_category
 
typedef bm::bvector< Alloc > bvector_type
 
typedef bvector_type::size_type size_type
 
typedef bvector_type::size_type value_type
 
typedef void difference_type
 
typedef void pointer
 
typedef void reference
 

Public Member Functions

 bulk_insert_iterator () BMNOEXCEPT
 
 ~bulk_insert_iterator ()
  More...
 
 bulk_insert_iterator (bvector< Alloc > &bvect, bm::sort_order so=BM_UNKNOWN) BMNOEXCEPT
  More...
 
 bulk_insert_iterator (const bulk_insert_iterator &iit)
  More...
 
 bulk_insert_iterator (const insert_iterator &iit)
  More...
 
 bulk_insert_iterator (bulk_insert_iterator &&iit) BMNOEXCEPT
  More...
 
bulk_insert_iteratoroperator= (const bulk_insert_iterator &ii)
  More...
 
bulk_insert_iteratoroperator= (bulk_insert_iterator &&ii) BMNOEXCEPT
  More...
 
bulk_insert_iteratoroperator= (size_type n)
  More...
 
bulk_insert_iteratoroperator* ()
  More...
 
bulk_insert_iteratoroperator++ ()
  More...
 
bulk_insert_iteratoroperator++ (int)
  More...
 
void flush ()
  More...
 
bvector_typeget_bvector () const BMNOEXCEPT
  More...
 

Static Protected Member Functions

static size_type buf_size_max () BMNOEXCEPT
  More...
 

Protected Attributes

bvector_typebvect_
 target bvector More...
 
size_typebuf_
 bulk insert buffer More...
 
size_type buf_size_
 current buffer size More...
 
bm::sort_order sorted_
 sort order hint More...
 

Detailed Description

template<class Alloc>
class bm::bvector< Alloc >::bulk_insert_iterator

Output iterator iterator designed to set "ON" bits based on input sequence of integers.

STL container can be converted to bvector using this iterator Insert iterator guarantees the vector will be dynamically resized (set_bit does not do that).

The difference from the canonical insert iterator, is that bulk insert implements internal buffering, which needs to flushed (or flushed automatically when goes out of scope). Buffering creates a delayed effect, which needs to be taken into account.

See also
insert_iterator
Examples
bv3vlogic.cpp, sample18.cpp, xsample04.cpp, and xsample04a.cpp.

Definition at line 464 of file bm.h.

Member Function Documentation

◆ buf_size_max()

template<class Alloc >
static size_type bm::bvector< Alloc >::bulk_insert_iterator::buf_size_max ( )
inlinestaticprotected

Definition at line 581 of file bm.h.

References bm::set_block_size.

Referenced by bm::bvector< Alloc >::bulk_insert_iterator::operator=().

◆ flush()

template<class Alloc >
void bm::bvector< Alloc >::bulk_insert_iterator::flush ( )
inline

◆ get_bvector()

template<class Alloc >
bvector_type* bm::bvector< Alloc >::bulk_insert_iterator::get_bvector ( ) const
inline

Definition at line 577 of file bm.h.

References bm::bvector< Alloc >::bulk_insert_iterator::bvect_.

◆ operator*()

template<class Alloc >
bulk_insert_iterator& bm::bvector< Alloc >::bulk_insert_iterator::operator* ( )
inline

Returns *this without doing anything (no-op)

Definition at line 559 of file bm.h.

◆ operator++() [1/2]

template<class Alloc >
bulk_insert_iterator& bm::bvector< Alloc >::bulk_insert_iterator::operator++ ( )
inline

Returns *this. This iterator does not move (no-op)

Definition at line 561 of file bm.h.

◆ operator++() [2/2]

template<class Alloc >
bulk_insert_iterator& bm::bvector< Alloc >::bulk_insert_iterator::operator++ ( int  )
inline

Returns *this. This iterator does not move (no-op)

Definition at line 563 of file bm.h.

◆ operator=() [1/3]

template<class Alloc >
bulk_insert_iterator& bm::bvector< Alloc >::bulk_insert_iterator::operator= ( bulk_insert_iterator &&  ii)
inline

◆ operator=() [2/3]

template<class Alloc >
bulk_insert_iterator& bm::bvector< Alloc >::bulk_insert_iterator::operator= ( const bulk_insert_iterator ii)
inline

◆ operator=() [3/3]

template<class Alloc >
bulk_insert_iterator& bm::bvector< Alloc >::bulk_insert_iterator::operator= ( size_type  n)
inline

Field Documentation

◆ buf_

template<class Alloc >
size_type* bm::bvector< Alloc >::bulk_insert_iterator::buf_
protected

◆ buf_size_

template<class Alloc >
size_type bm::bvector< Alloc >::bulk_insert_iterator::buf_size_
protected

◆ bvect_

template<class Alloc >
bvector_type* bm::bvector< Alloc >::bulk_insert_iterator::bvect_
protected

◆ sorted_

template<class Alloc >
bm::sort_order bm::bvector< Alloc >::bulk_insert_iterator::sorted_
protected

The documentation for this class was generated from the following file: