linbox
Subiterator< Iterator > Class Template Reference

Subvector iterator class provides striding iterators. More...

#include <subiterator.h>

Public Types

typedef std::iterator_traits< Iterator >::iterator_category iterator_category
 
typedef std::iterator_traits< Iterator >::value_type value_type
 
typedef std::iterator_traits< Iterator >::difference_type difference_type
 
typedef std::iterator_traits< Iterator >::pointer pointer
 
typedef std::iterator_traits< Iterator >::reference reference
 

Public Member Functions

 Subiterator ()
 
 Subiterator (const Iterator &iter, const difference_type &stride=1)
 Constructors.
 
 Subiterator (const Subiterator &iter)
 
 Subiterator (Iterator &iter)
 
template<class Iterator2>
 Subiterator (const Subiterator< Iterator2 > &iter)
 
template<class Iterator2>
 Subiterator (Subiterator< Iterator2 > &iter)
 
template<class Iterator2>
Subiteratoroperator= (const Subiterator< Iterator2 > &sub)
 
Subiteratoroperator= (const Subiterator &sub)
 
const reference operator* () const
 
reference operator* ()
 
Iterator operator-> () const
 
reference operator[] (difference_type n)
 
const reference operator[] (difference_type n) const
 
Subiteratoroperator++ ()
 
Subiterator operator++ (int)
 
Subiteratoroperator-- ()
 
Subiterator operator-- (int)
 
Subiterator operator+ (difference_type n) const
 
Subiteratoroperator+= (difference_type n)
 
Subiterator operator- (difference_type n) const
 
difference_type operator- (const Subiterator &x) const
 
Subiteratoroperator-= (difference_type n)
 
bool operator== (const Subiterator &i) const
 
bool operator!= (const Subiterator &i) const
 
bool operator< (const Subiterator &i) const
 
bool operator> (const Subiterator &i) const
 
bool operator<= (const Subiterator &i) const
 
bool operator>= (const Subiterator &i) const
 
void swap (Subiterator &x)
 
difference_type showStride () const
 
const Iterator & showIterator () const
 

Protected Attributes

Iterator _iter
 
difference_type _stride
 

Detailed Description

template<typename Iterator>
class LinBox::Subiterator< Iterator >

Subvector iterator class provides striding iterators.

A Subiterator steps by a fixed stride thru the underlying container. Subiter<Iterator> requires that Iterator be a random access iterator class and then itself provides the full functionality of a random access iterator class. See STL documentation for that functionality. Documented here is only the constructor from (1) an iterator of an underlying container and (2) a stride amount.

Member Typedef Documentation

◆ iterator_category

template<typename Iterator>
typedef std::iterator_traits<Iterator>::iterator_category iterator_category

◆ value_type

template<typename Iterator>
typedef std::iterator_traits<Iterator>::value_type value_type

◆ difference_type

template<typename Iterator>
typedef std::iterator_traits<Iterator>::difference_type difference_type

◆ pointer

template<typename Iterator>
typedef std::iterator_traits<Iterator>::pointer pointer

◆ reference

template<typename Iterator>
typedef std::iterator_traits<Iterator>::reference reference

Constructor & Destructor Documentation

◆ Subiterator() [1/6]

template<typename Iterator>
Subiterator ( )
inline

◆ Subiterator() [2/6]

template<typename Iterator>
Subiterator ( const Iterator & iter,
const difference_type & stride = 1 )
inline

Constructors.

Subiterator p (pp, 3) provides an iterator which initially has the same reference, but for which increments and offsets step by the amount stride rather than 1. Thus p+k is equivalent to pp+(stride*k).

Striding iterators are easily positioned beyond the bounds of the underlying container. It is up to the user to dereference the iterator only when it has a valid reference.

◆ Subiterator() [3/6]

template<typename Iterator>
Subiterator ( const Subiterator< Iterator > & iter)
inline

◆ Subiterator() [4/6]

template<typename Iterator>
Subiterator ( Iterator & iter)
inline

◆ Subiterator() [5/6]

template<typename Iterator>
template<class Iterator2>
Subiterator ( const Subiterator< Iterator2 > & iter)
inline

◆ Subiterator() [6/6]

template<typename Iterator>
template<class Iterator2>
Subiterator ( Subiterator< Iterator2 > & iter)
inline

Member Function Documentation

◆ operator=() [1/2]

template<typename Iterator>
template<class Iterator2>
Subiterator & operator= ( const Subiterator< Iterator2 > & sub)
inline

◆ operator=() [2/2]

template<typename Iterator>
Subiterator & operator= ( const Subiterator< Iterator > & sub)
inline

◆ operator*() [1/2]

template<typename Iterator>
const reference operator* ( ) const
inline

◆ operator*() [2/2]

template<typename Iterator>
reference operator* ( )
inline

◆ operator->()

template<typename Iterator>
Iterator operator-> ( ) const
inline

◆ operator[]() [1/2]

template<typename Iterator>
reference operator[] ( difference_type n)
inline

◆ operator[]() [2/2]

template<typename Iterator>
const reference operator[] ( difference_type n) const
inline

◆ operator++() [1/2]

template<typename Iterator>
Subiterator & operator++ ( )
inline

◆ operator++() [2/2]

template<typename Iterator>
Subiterator operator++ ( int )
inline

◆ operator--() [1/2]

template<typename Iterator>
Subiterator & operator-- ( )
inline

◆ operator--() [2/2]

template<typename Iterator>
Subiterator operator-- ( int )
inline

◆ operator+()

template<typename Iterator>
Subiterator operator+ ( difference_type n) const
inline

◆ operator+=()

template<typename Iterator>
Subiterator & operator+= ( difference_type n)
inline

◆ operator-() [1/2]

template<typename Iterator>
Subiterator operator- ( difference_type n) const
inline

◆ operator-() [2/2]

template<typename Iterator>
difference_type operator- ( const Subiterator< Iterator > & x) const
inline

◆ operator-=()

template<typename Iterator>
Subiterator & operator-= ( difference_type n)
inline

◆ operator==()

template<typename Iterator>
bool operator== ( const Subiterator< Iterator > & i) const
inline

◆ operator!=()

template<typename Iterator>
bool operator!= ( const Subiterator< Iterator > & i) const
inline

◆ operator<()

template<typename Iterator>
bool operator< ( const Subiterator< Iterator > & i) const
inline

◆ operator>()

template<typename Iterator>
bool operator> ( const Subiterator< Iterator > & i) const
inline

◆ operator<=()

template<typename Iterator>
bool operator<= ( const Subiterator< Iterator > & i) const
inline

◆ operator>=()

template<typename Iterator>
bool operator>= ( const Subiterator< Iterator > & i) const
inline

◆ swap()

template<typename Iterator>
void swap ( Subiterator< Iterator > & x)
inline

◆ showStride()

template<typename Iterator>
difference_type showStride ( ) const
inline

◆ showIterator()

template<typename Iterator>
const Iterator & showIterator ( ) const
inline

Field Documentation

◆ _iter

template<typename Iterator>
Iterator _iter
protected

wrapped iterator

◆ _stride

template<typename Iterator>
difference_type _stride
protected

length between iterations


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