bm::sparse_vector< Val, BV >::back_insert_iterator Class Reference
BitMagic Library » bit-sliced (bitwise transposition) succinct sparse vectors

Back insert iterator implements buffered insert, faster than generic access assignment. More...

`#include <bmsparsevec.h>`

## Public Types

typedef std::output_iterator_tag | iterator_category
typedef sparse_vector< Val, BV > | sparse_vector_type
typedef sparse_vector_type * | sparse_vector_type_ptr
typedef sparse_vector_type::value_type | value_type
typedef sparse_vector_type::unsigned_value_type | unsigned_value_type
typedef sparse_vector_type::size_type | size_type
typedef sparse_vector_type::bvector_type | bvector_type
typedef bvector_type::allocator_type | allocator_type
typedef bvector_type::allocator_type::allocator_pool_type | allocator_pool_type
typedef bm::byte_buffer< allocator_type > | buffer_type
typedef void | difference_type
typedef void | pointer
typedef void | reference

## Public Member Functions

void | operator= (value_type v)
| push value to the vector
back_insert_iterator & | operator* ()
| noop
back_insert_iterator & | operator++ ()
| noop
back_insert_iterator & | operator++ (int)
| noop
void | add (value_type v)
| add value to the container
void | add_null ()
| add NULL (no-value) to the container
void | add_null (size_type count)
| add a series of consequitve NULLs (no-value) to the container
bool | empty () const
| return true if insertion buffer is empty
bool | flush ()
| flush the accumulated buffer
bvector_type * | get_null_bvect () const BMNOEXCEPT
| Get access to not-null vector.
void | add_value_no_null (value_type v)
| add value to the buffer without changing the NULL vector
void | disable_set_null () BMNOEXCEPT
| Reconfigure back inserter not to touch the NULL vector.
Construction and assignment
| back_insert_iterator ()
| back_insert_iterator (sparse_vector_type *sv)
| back_insert_iterator (const back_insert_iterator &bi)
void | operator= (const back_insert_iterator &bi)
| back_insert_iterator (back_insert_iterator &&bi) BMNOEXCEPT
| move constructor
void | operator= (back_insert_iterator &&bi) BMNOEXCEPT
| move assignment
| ~back_insert_iterator ()

## Protected Types

typedef bvector_type::block_idx_type | block_idx_type

## Detailed Description

template<class Val, class BV>
class bm::sparse_vector< Val, BV >::back_insert_iterator

Back insert iterator implements buffered insert, faster than generic access assignment.

Limitations for buffered inserter:

1. Do not use more than one inserter per vector at a time
2. Use method flush() at the end to send the rest of accumulated buffer flush is happening automatically on destruction, but if flush produces an exception (for whatever reason) it will be an exception in destructor. As such, explicit flush() is safer way to finilize the sparse vector load.

Definition at line 255 of file bmsparsevec.h.

## Member Typedef Documentation

## allocator_pool_type

template<class Val, class BV>

typedef bvector_type::allocator_type::allocator_pool_type bm::sparse_vector< Val, BV >::back_insert_iterator::allocator_pool_type

Definition at line 268 of file bmsparsevec.h.

## allocator_type

template<class Val, class BV>

typedef bvector_type::allocator_type bm::sparse_vector< Val, BV >::back_insert_iterator::allocator_type

Definition at line 267 of file bmsparsevec.h.

## block_idx_type

template<class Val, class BV>

typedef bvector_type::block_idx_type bm::sparse_vector< Val, BV >::back_insert_iterator::block_idx_type

protected

Definition at line 358 of file bmsparsevec.h.

## buffer_type

template<class Val, class BV>

typedef bm::byte_buffer<allocator_type> bm::sparse_vector< Val, BV >::back_insert_iterator::buffer_type

Definition at line 269 of file bmsparsevec.h.

## bvector_type

template<class Val, class BV>

typedef sparse_vector_type::bvector_type bm::sparse_vector< Val, BV >::back_insert_iterator::bvector_type

Definition at line 266 of file bmsparsevec.h.

## difference_type

template<class Val, class BV>

typedef void bm::sparse_vector< Val, BV >::back_insert_iterator::difference_type

Definition at line 271 of file bmsparsevec.h.

## iterator_category

template<class Val, class BV>

typedef std::output_iterator_tag bm::sparse_vector< Val, BV >::back_insert_iterator::iterator_category

Definition at line 259 of file bmsparsevec.h.

## pointer

template<class Val, class BV>

typedef void bm::sparse_vector< Val, BV >::back_insert_iterator::pointer

Definition at line 272 of file bmsparsevec.h.

## reference

template<class Val, class BV>

typedef void bm::sparse_vector< Val, BV >::back_insert_iterator::reference

Definition at line 273 of file bmsparsevec.h.

## size_type

template<class Val, class BV>

typedef sparse_vector_type::size_type bm::sparse_vector< Val, BV >::back_insert_iterator::size_type

Definition at line 265 of file bmsparsevec.h.

## sparse_vector_type

template<class Val, class BV>

typedef sparse_vector<Val, BV> bm::sparse_vector< Val, BV >::back_insert_iterator::sparse_vector_type

Definition at line 261 of file bmsparsevec.h.

## sparse_vector_type_ptr

template<class Val, class BV>

typedef sparse_vector_type* bm::sparse_vector< Val, BV >::back_insert_iterator::sparse_vector_type_ptr

Definition at line 262 of file bmsparsevec.h.

## unsigned_value_type

template<class Val, class BV>

typedef sparse_vector_type::unsigned_value_type bm::sparse_vector< Val, BV >::back_insert_iterator::unsigned_value_type

Definition at line 264 of file bmsparsevec.h.

## value_type

template<class Val, class BV>

typedef sparse_vector_type::value_type bm::sparse_vector< Val, BV >::back_insert_iterator::value_type

Definition at line 263 of file bmsparsevec.h.

## Constructor & Destructor Documentation

## back_insert_iterator() [1/4]

template<class Val, class BV>

bm::sparse_vector< Val, BV >::back_insert_iterator::back_insert_iterator | ( |  | ) |

Definition at line 2461 of file bmsparsevec.h.

Referenced by back_insert_iterator(), back_insert_iterator(), operator*(), operator++(), operator++(), operator=(), and operator=().

## back_insert_iterator() [2/4]

template<class Val, class BV>

bm::sparse_vector< Val, BV >::back_insert_iterator::back_insert_iterator | ( | sparse_vector_type * | sv | ) |

## back_insert_iterator() [3/4]

template<class Val, class BV>

bm::sparse_vector< Val, BV >::back_insert_iterator::back_insert_iterator | ( | const back_insert_iterator & | bi | ) |

References back_insert_iterator().

## back_insert_iterator() [4/4]

template<class Val, class BV>

bm::sparse_vector< Val, BV >::back_insert_iterator::back_insert_iterator | ( | back_insert_iterator && | bi | ) |

move constructor

References back_insert_iterator(), and BMNOEXCEPT.

## ~back_insert_iterator()

template<class Val, class BV>

bm::sparse_vector< Val, BV >::back_insert_iterator::~back_insert_iterator | ( |  | ) |

Definition at line 2517 of file bmsparsevec.h.

References flush().

## Member Function Documentation

## add()

template<class Val, class BV>

void bm::sparse_vector< Val, BV >::back_insert_iterator::add | ( | value_type | v | ) |

add value to the container

Definition at line 2525 of file bmsparsevec.h.

References add_value_no_null(), and BM_ASSERT.

Referenced by operator=().

## add_null() [1/2]

template<class Val, class BV>

void bm::sparse_vector< Val, BV >::back_insert_iterator::add_null | ( |  | ) |

add NULL (no-value) to the container

Definition at line 2567 of file bmsparsevec.h.

References add_value_no_null(), and BM_ASSERT.

## add_null() [2/2]

template<class Val, class BV>

void bm::sparse_vector< Val, BV >::back_insert_iterator::add_null | ( | size_type | count | ) |

add a series of consequitve NULLs (no-value) to the container

## add_value_no_null()

template<class Val, class BV>

BMFORCEINLINE void bm::sparse_vector< Val, BV >::back_insert_iterator::add_value_no_null | ( | value_type | v | ) |

add value to the buffer without changing the NULL vector

Parameters

  v | - value to push back

Definition at line 2547 of file bmsparsevec.h.

References BM_ASSERT, flush(), bm::sparse_vector< Val, BV >::n_buf_size, and bm::base_sparse_vector< Val, BV, 1 >::s2u().

Referenced by add(), and add_null().

## disable_set_null()

template<class Val, class BV>

void bm::sparse_vector< Val, BV >::back_insert_iterator::disable_set_null | ( |  | ) |

inline

Reconfigure back inserter not to touch the NULL vector.

Definition at line 354 of file bmsparsevec.h.

References BMNOEXCEPT.

## empty()

template<class Val, class BV>

bool bm::sparse_vector< Val, BV >::back_insert_iterator::empty | ( |  | ) | const

return true if insertion buffer is empty

Definition at line 2594 of file bmsparsevec.h.

Referenced by operator=().

## flush()

template<class Val, class BV>

bool bm::sparse_vector< Val, BV >::back_insert_iterator::flush | ( |  | ) |

flush the accumulated buffer

Returns
  true if actually flushed (back inserter had data to flush)

Definition at line 2602 of file bmsparsevec.h.

References bm::set_block_shift.

Referenced by add_value_no_null(), operator=(), operator=(), and ~back_insert_iterator().

## get_null_bvect()

template<class Val, class BV>

bvector_type * bm::sparse_vector< Val, BV >::back_insert_iterator::get_null_bvect | ( |  | ) | const

inline

Get access to not-null vector.

Definition at line 343 of file bmsparsevec.h.

References BMNOEXCEPT.

## operator*()

template<class Val, class BV>

back_insert_iterator & bm::sparse_vector< Val, BV >::back_insert_iterator::operator* | ( |  | ) |

inline

noop

Definition at line 312 of file bmsparsevec.h.

References back_insert_iterator().

## operator++() [1/2]

template<class Val, class BV>

back_insert_iterator & bm::sparse_vector< Val, BV >::back_insert_iterator::operator++ | ( |  | ) |

inline

noop

Definition at line 314 of file bmsparsevec.h.

References back_insert_iterator().

## operator++() [2/2]

template<class Val, class BV>

back_insert_iterator & bm::sparse_vector< Val, BV >::back_insert_iterator::operator++ | ( | int |  | ) |

inline

noop

Definition at line 316 of file bmsparsevec.h.

References back_insert_iterator().

## operator=() [1/3]

template<class Val, class BV>

void bm::sparse_vector< Val, BV >::back_insert_iterator::operator= | ( | back_insert_iterator && | bi | ) |

inline

move assignment

Definition at line 295 of file bmsparsevec.h.

References back_insert_iterator(), BMNOEXCEPT, and flush().

## operator=() [2/3]

template<class Val, class BV>

void bm::sparse_vector< Val, BV >::back_insert_iterator::operator= | ( | const back_insert_iterator & | bi | ) |

inline

Definition at line 283 of file bmsparsevec.h.

References back_insert_iterator(), BM_ASSERT, empty(), flush(), and bm::sparse_vector< Val, BV >::n_buf_size.

## operator=() [3/3]

template<class Val, class BV>

void bm::sparse_vector< Val, BV >::back_insert_iterator::operator= | ( | value_type | v | ) |

inline

push value to the vector

Definition at line 310 of file bmsparsevec.h.

References add().

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

- bmsparsevec.h