|
| 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) |
|
drwnSparseVec & | operator= (const drwnSparseVec< T > &v) |
|
drwnSparseVec & | operator= (const vector< T > &v) |
|
const T & | operator[] (size_t indx) const |
|
reference | operator[] (size_t indx) |
|
| operator vector< T > () const |
|
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");