Darwin  1.10(beta)
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
Classes | Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Static Protected Attributes | Friends | List of all members
drwnSparseVec< T > Class Template Reference

Quick-and-dirty sparse vector class as a plugin replacement for std::vector. More...

Classes

class  iterator
 
class  reference
 

Public Types

typedef T value_type
 
typedef T * pointer
 
typedef const T * const_pointer
 
typedef const T & const_reference
 
typedef size_t size_type
 
typedef ptrdiff_t difference_type
 

Public Member Functions

 drwnSparseVec (size_t size)
 
 drwnSparseVec (const drwnSparseVec< T > &v)
 
 drwnSparseVec (const vector< T > &v)
 
bool empty () const
 
void clear ()
 
void resize (size_t n)
 
size_t size () const
 
size_t capacity () const
 
size_t max_size () const
 
void reserve (size_t size)
 
void swap (drwnSparseVec< T > &v)
 
size_t nnz () const
 
iterator begin ()
 
iterator end ()
 
void push_back (const T &x)
 
void pop_back ()
 
void insert (size_t position, const T &x)
 
void insert (size_t position, typename vector< T >::const_iterator first, typename vector< T >::const_iterator last)
 
void insert (iterator position, const T &x)
 
void insert (iterator position, typename vector< T >::const_iterator first, typename vector< T >::const_iterator last)
 
drwnSparseVecoperator= (const drwnSparseVec< T > &v)
 
drwnSparseVecoperator= (const vector< T > &v)
 
const T & operator[] (size_t indx) const
 
reference operator[] (size_t indx)
 
 operator vector< T > () const
 

Static Public Member Functions

static T dot (const vector< T > &x, const drwnSparseVec< T > &y)
 efficient dot product between a vector and a sparse vector
 
static T dot (const drwnSparseVec< T > &x, const vector< T > &y)
 efficient dot product between a sparse vector and a vector
 
static T dot (const drwnSparseVec< T > &x, const drwnSparseVec< T > &y)
 efficient dot product between two sparse vectors
 

Protected Member Functions

vector< T > decode () const
 
void encode (const vector< T > &v)
 

Protected Attributes

size_t _size
 
map< size_t, T > _data
 

Static Protected Attributes

static const T _zero
 

Friends

class reference
 
class iterator
 

Detailed Description

template<typename T>
class drwnSparseVec< T >

Quick-and-dirty sparse vector class as a plugin replacement for std::vector.

The class has the same interface as std::vector, but does not explicitly store zeros. The class typecasts between std::vector objects when needed so is very computationally inefficient. However, code modification should be minimal. The dot product member function should be used where possible to mitigate computational inefficiency.

The folllowing code snippet demonstrates example usage:

for (size_t i = 0; i < x.size(); i++) {
if (drand48() < 0.1)
x[i] = 1.0;
}
DRWN_LOG_MESSAGE("sparse vector has " << x.nnz() << " non-zero entries");

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