aimstil  5.0.5
til::sparse_vector< T, BaselinePolicy > Class Template Reference

A class that mimic the behavior of std::vector but with a storage policy focused on sparse data. More...

#include <til/sparse_vector.h>

Inheritance diagram for til::sparse_vector< T, BaselinePolicy >:

Classes

class  const_iterator
 
class  iterator
 
class  OutOfRange
 
class  sparse_const_iterator
 
class  sparse_iterator
 

Public Types

typedef sparse_vector< T > Self
 
typedef std::map< std::size_t, T > Map
 
typedef Map::mapped_type value_type
 
typedef T const_reference
 
typedef ValueProxy reference
 
typedef const T * const_pointer
 

Public Member Functions

 sparse_vector ()
 Create a null vector of size 0. More...
 
 sparse_vector (std::size_t d)
 Create a null vector of length d. More...
 
ValueProxy operator[] (std::size_t i)
 Read-write access to i-th element. More...
 
operator[] (std::size_t i) const
 Get value of i-th element. More...
 
get (std::size_t i) const
 Get i-th value. More...
 
void set (std::size_t i, const T &value)
 Set n-th value. More...
 
MapgetMap ()
 Returns the internal data. More...
 
Map const & getMap () const
 
BaselinePolicy baselinePolicy () const
 
BaselinePolicy & baselinePolicy ()
 
std::size_t size () const
 Alike STL container's "size". More...
 
void clear ()
 Alike STL container's "clear". More...
 
bool empty () const
 Alike STL container's "empty". More...
 
void erase (const sparse_iterator &i)
 Alike STL container's "erase". More...
 
bool is_null () const
 
sparse_iterator sparse_begin ()
 
sparse_iterator sparse_end ()
 
sparse_const_iterator sparse_begin () const
 
sparse_const_iterator sparse_end () const
 
const_iterator begin () const
 
const_iterator end () const
 
iterator begin ()
 
iterator end ()
 
void operator+= (const sparse_vector< T > &a)
 
void operator-= (const sparse_vector< T > &a)
 
void operator*= (const sparse_vector< T > &a)
 
void operator/= (const sparse_vector< T > &a)
 
void operator+= (const T &value)
 
void operator-= (const T &value)
 
void operator*= (const T &value)
 

Detailed Description

template<typename T, typename BaselinePolicy = policy::SVBaseline_Value<T>>
class til::sparse_vector< T, BaselinePolicy >

A class that mimic the behavior of std::vector but with a storage policy focused on sparse data.

Basically, a sparse vector has a default value, and stores only values that are not equal to this default value. Conceptually just a std::map with a default value, if you like. But then, everything starts being more complicated because of the apparent similarity with std::vector... Note that this is a container – if you are looking for a more mathematical object, have a look at SparseVector, the sparse counterpart of Vector.

Definition at line 134 of file sparse_vector.h.

Member Typedef Documentation

◆ const_pointer

template<typename T, typename BaselinePolicy = policy::SVBaseline_Value<T>>
typedef const T* til::sparse_vector< T, BaselinePolicy >::const_pointer

Definition at line 161 of file sparse_vector.h.

◆ const_reference

template<typename T, typename BaselinePolicy = policy::SVBaseline_Value<T>>
typedef T til::sparse_vector< T, BaselinePolicy >::const_reference

Definition at line 159 of file sparse_vector.h.

◆ Map

template<typename T, typename BaselinePolicy = policy::SVBaseline_Value<T>>
typedef std::map<std::size_t, T> til::sparse_vector< T, BaselinePolicy >::Map

Definition at line 156 of file sparse_vector.h.

◆ reference

template<typename T, typename BaselinePolicy = policy::SVBaseline_Value<T>>
typedef ValueProxy til::sparse_vector< T, BaselinePolicy >::reference

Definition at line 160 of file sparse_vector.h.

◆ Self

template<typename T, typename BaselinePolicy = policy::SVBaseline_Value<T>>
typedef sparse_vector<T> til::sparse_vector< T, BaselinePolicy >::Self

Definition at line 151 of file sparse_vector.h.

◆ value_type

template<typename T, typename BaselinePolicy = policy::SVBaseline_Value<T>>
typedef Map::mapped_type til::sparse_vector< T, BaselinePolicy >::value_type

Definition at line 158 of file sparse_vector.h.

Constructor & Destructor Documentation

◆ sparse_vector() [1/2]

template<typename T, typename BaselinePolicy = policy::SVBaseline_Value<T>>
til::sparse_vector< T, BaselinePolicy >::sparse_vector ( )
inline

Create a null vector of size 0.

Definition at line 166 of file sparse_vector.h.

◆ sparse_vector() [2/2]

template<typename T, typename BaselinePolicy = policy::SVBaseline_Value<T>>
til::sparse_vector< T, BaselinePolicy >::sparse_vector ( std::size_t  d)
inline

Create a null vector of length d.

Definition at line 174 of file sparse_vector.h.

Member Function Documentation

◆ baselinePolicy() [1/2]

template<typename T, typename BaselinePolicy = policy::SVBaseline_Value<T>>
BaselinePolicy til::sparse_vector< T, BaselinePolicy >::baselinePolicy ( ) const
inline

Definition at line 321 of file sparse_vector.h.

Referenced by til::fill().

◆ baselinePolicy() [2/2]

template<typename T, typename BaselinePolicy = policy::SVBaseline_Value<T>>
BaselinePolicy& til::sparse_vector< T, BaselinePolicy >::baselinePolicy ( )
inline

Definition at line 322 of file sparse_vector.h.

◆ begin() [1/2]

template<typename T, typename BaselinePolicy = policy::SVBaseline_Value<T>>
const_iterator til::sparse_vector< T, BaselinePolicy >::begin ( ) const
inline

Definition at line 389 of file sparse_vector.h.

◆ begin() [2/2]

template<typename T, typename BaselinePolicy = policy::SVBaseline_Value<T>>
iterator til::sparse_vector< T, BaselinePolicy >::begin ( )
inline

Definition at line 391 of file sparse_vector.h.

◆ clear()

template<typename T, typename BaselinePolicy = policy::SVBaseline_Value<T>>
void til::sparse_vector< T, BaselinePolicy >::clear ( )
inline

Alike STL container's "clear".

Definition at line 332 of file sparse_vector.h.

◆ empty()

template<typename T, typename BaselinePolicy = policy::SVBaseline_Value<T>>
bool til::sparse_vector< T, BaselinePolicy >::empty ( ) const
inline

Alike STL container's "empty".

Definition at line 339 of file sparse_vector.h.

◆ end() [1/2]

template<typename T, typename BaselinePolicy = policy::SVBaseline_Value<T>>
const_iterator til::sparse_vector< T, BaselinePolicy >::end ( ) const
inline

Definition at line 390 of file sparse_vector.h.

◆ end() [2/2]

template<typename T, typename BaselinePolicy = policy::SVBaseline_Value<T>>
iterator til::sparse_vector< T, BaselinePolicy >::end ( )
inline

Definition at line 392 of file sparse_vector.h.

◆ erase()

template<typename T, typename BaselinePolicy = policy::SVBaseline_Value<T>>
void til::sparse_vector< T, BaselinePolicy >::erase ( const sparse_iterator i)
inline

Alike STL container's "erase".

Definition at line 342 of file sparse_vector.h.

◆ get()

template<typename T, typename BaselinePolicy = policy::SVBaseline_Value<T>>
T til::sparse_vector< T, BaselinePolicy >::get ( std::size_t  i) const
inline

Get i-th value.

Definition at line 224 of file sparse_vector.h.

◆ getMap() [1/2]

template<typename T, typename BaselinePolicy = policy::SVBaseline_Value<T>>
Map& til::sparse_vector< T, BaselinePolicy >::getMap ( )
inline

◆ getMap() [2/2]

template<typename T, typename BaselinePolicy = policy::SVBaseline_Value<T>>
Map const& til::sparse_vector< T, BaselinePolicy >::getMap ( ) const
inline

Definition at line 316 of file sparse_vector.h.

◆ is_null()

template<typename T, typename BaselinePolicy = policy::SVBaseline_Value<T>>
bool til::sparse_vector< T, BaselinePolicy >::is_null ( ) const
inline

Definition at line 345 of file sparse_vector.h.

◆ operator*=() [1/2]

template<typename T, typename BaselinePolicy = policy::SVBaseline_Value<T>>
void til::sparse_vector< T, BaselinePolicy >::operator*= ( const sparse_vector< T > &  a)
inline

Definition at line 408 of file sparse_vector.h.

◆ operator*=() [2/2]

template<typename T, typename BaselinePolicy = policy::SVBaseline_Value<T>>
void til::sparse_vector< T, BaselinePolicy >::operator*= ( const T &  value)
inline

Definition at line 417 of file sparse_vector.h.

◆ operator+=() [1/2]

template<typename T, typename BaselinePolicy = policy::SVBaseline_Value<T>>
void til::sparse_vector< T, BaselinePolicy >::operator+= ( const sparse_vector< T > &  a)
inline

Definition at line 404 of file sparse_vector.h.

◆ operator+=() [2/2]

template<typename T, typename BaselinePolicy = policy::SVBaseline_Value<T>>
void til::sparse_vector< T, BaselinePolicy >::operator+= ( const T &  value)
inline

Definition at line 413 of file sparse_vector.h.

◆ operator-=() [1/2]

template<typename T, typename BaselinePolicy = policy::SVBaseline_Value<T>>
void til::sparse_vector< T, BaselinePolicy >::operator-= ( const sparse_vector< T > &  a)
inline

Definition at line 406 of file sparse_vector.h.

◆ operator-=() [2/2]

template<typename T, typename BaselinePolicy = policy::SVBaseline_Value<T>>
void til::sparse_vector< T, BaselinePolicy >::operator-= ( const T &  value)
inline

Definition at line 415 of file sparse_vector.h.

◆ operator/=()

template<typename T, typename BaselinePolicy = policy::SVBaseline_Value<T>>
void til::sparse_vector< T, BaselinePolicy >::operator/= ( const sparse_vector< T > &  a)
inline

Definition at line 410 of file sparse_vector.h.

◆ operator[]() [1/2]

template<typename T, typename BaselinePolicy = policy::SVBaseline_Value<T>>
ValueProxy til::sparse_vector< T, BaselinePolicy >::operator[] ( std::size_t  i)
inline

Read-write access to i-th element.

NB: never use this operator if you are using map iterators at the same time. This is because operator[] may remove elements from the map and invalidate an existing iterator pointing to the removed element.

Definition at line 187 of file sparse_vector.h.

◆ operator[]() [2/2]

template<typename T, typename BaselinePolicy = policy::SVBaseline_Value<T>>
T til::sparse_vector< T, BaselinePolicy >::operator[] ( std::size_t  i) const
inline

Get value of i-th element.

Definition at line 205 of file sparse_vector.h.

◆ set()

template<typename T, typename BaselinePolicy = policy::SVBaseline_Value<T>>
void til::sparse_vector< T, BaselinePolicy >::set ( std::size_t  i,
const T &  value 
)
inline

Set n-th value.

Definition at line 263 of file sparse_vector.h.

◆ size()

template<typename T, typename BaselinePolicy = policy::SVBaseline_Value<T>>
std::size_t til::sparse_vector< T, BaselinePolicy >::size ( ) const
inline

Alike STL container's "size".

Return the size of the vector (this is not the number of non-default elements, but the real size of the underlying vector).

Definition at line 329 of file sparse_vector.h.

◆ sparse_begin() [1/2]

template<typename T, typename BaselinePolicy = policy::SVBaseline_Value<T>>
sparse_iterator til::sparse_vector< T, BaselinePolicy >::sparse_begin ( )
inline

Definition at line 384 of file sparse_vector.h.

Referenced by til::operator<<().

◆ sparse_begin() [2/2]

template<typename T, typename BaselinePolicy = policy::SVBaseline_Value<T>>
sparse_const_iterator til::sparse_vector< T, BaselinePolicy >::sparse_begin ( ) const
inline

Definition at line 386 of file sparse_vector.h.

◆ sparse_end() [1/2]

template<typename T, typename BaselinePolicy = policy::SVBaseline_Value<T>>
sparse_iterator til::sparse_vector< T, BaselinePolicy >::sparse_end ( )
inline

Definition at line 385 of file sparse_vector.h.

◆ sparse_end() [2/2]

template<typename T, typename BaselinePolicy = policy::SVBaseline_Value<T>>
sparse_const_iterator til::sparse_vector< T, BaselinePolicy >::sparse_end ( ) const
inline

Definition at line 387 of file sparse_vector.h.


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