b-tree sequence
sequence container optimized for inserting/deleting in random places
 All Classes Files Functions Typedefs
Public Types | Public Member Functions | List of all members
btree_seq< T, L, M, A >::iterator_base< TT > Class Template Reference

Iterator template for const_iterator and iterator. More...

#include <btree_seq.h>

Public Types

typedef
std::random_access_iterator_tag 
iterator_category
 Random access iterator category.
 
typedef std::iterator
< std::random_access_iterator_tag,
TT >::value_type 
value_type
 T or const T.
 
typedef std::iterator
< std::random_access_iterator_tag,
TT >::difference_type 
difference_type
 ptrdiff_t (int).
 
typedef std::iterator
< std::random_access_iterator_tag,
TT >::reference 
reference
 T& or const T&.
 
typedef std::iterator
< std::random_access_iterator_tag,
TT >::pointer 
pointer
 T* or const T*.
 

Public Member Functions

 iterator_base ()
 Default constructor.
 
 iterator_base (const btree_seq *t, size_type pos)
 Pointing to specific place in the tree.
 
 iterator_base (const iterator_base &that)
 Copy constructor for the same type.
 
template<typename T2 >
 iterator_base (const iterator_base< T2 > &that)
 Constructor for conversion from iterator to const_iterator.
 
iterator_baseoperator= (const iterator_base &that)
 Operator = for the same type.
 
template<typename T2 >
iterator_baseoperator= (const iterator_base< T2 > &that)
 Conversion from iterator to const_iterator.
 
reference operator* () const
 Dereferencing.
 
pointer operator-> () const
 Dereferencing.
 
reference operator[] (difference_type n) const
 Getting arbitary element.
 
template<typename T2 >
bool operator== (const iterator_base< T2 > &that) const
 Comparison.
 
template<typename T2 >
bool operator!= (const iterator_base< T2 > &that) const
 Comparison.
 
template<typename T2 >
bool operator> (const iterator_base< T2 > &that) const
 Comparison.
 
template<typename T2 >
bool operator< (const iterator_base< T2 > &that) const
 Comparison.
 
template<typename T2 >
bool operator>= (const iterator_base< T2 > &that) const
 Comparison.
 
template<typename T2 >
bool operator<= (const iterator_base< T2 > &that) const
 Comparison.
 
template<typename T2 >
difference_type operator- (const iterator_base< T2 > &that) const
 Comparison.
 
iterator_baseoperator++ ()
 Preincrement.
 
iterator_baseoperator-- ()
 Predecrement.
 
iterator_base operator++ (int)
 Postincrement.
 
iterator_base operator-- (int)
 Postdecrement.
 
iterator_baseoperator+= (difference_type n)
 Increase position by n.
 
iterator_baseoperator-= (difference_type n)
 Decrease position by n.
 
iterator_base operator+ (difference_type n) const
 Increase position by n.
 
iterator_base operator- (difference_type n) const
 Decrease position by n.
 
size_type get_position () const
 Returns current position.
 
const btree_seqget_container () const
 Returns current container.
 
pointer __get_null_pointer () const
 Returns null pointer.
 

Detailed Description

template<typename T, int L = 30, int M = 60, typename A = std::allocator<T>>
template<typename TT>
class btree_seq< T, L, M, A >::iterator_base< TT >

Iterator template for const_iterator and iterator.

This is a lazy implementation of iterator. In other words, it takes constant time to construct, increment, decrement, get_position and relocate operations. When being dereferenced, it checks its validity and does actual work if necessary. So dereference operations (operators '*' '[]' '->') do most work and take from constant time to O(log(N)) time, depending on operation mode. If iterator is used in sequential mode (solely incrementing/decrementing), dereference operations require practically constant time amortized. If iterator is used in random access mode, dereference operations take O(log(N)) time and can be as expensive as sequence->operator[]. Hint: using function 'visit' might be faster than iterator. If you are modifying only one container at a time, using 'visit' might be preferable.


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