Public Types | Public Member Functions | List of all members
blaze::SparseVectorProxy< PT, VT > Class Template Reference

Proxy backend for sparse vector types.The SparseVectorProxy class serves as a backend for the Proxy class. It is used in case the data type represented by the proxy is a sparse vector and augments the Proxy interface by the complete interface required of sparse vectors. More...

#include <SparseVectorProxy.h>

Inherits blaze::SparseVector< PT, IsRowVector< VT >::value >.

Public Types

enum  { smpAssignable = VT::smpAssignable }
 Compilation flag for SMP assignments.
 
typedef VT::ResultType ResultType
 Result type for expression template evaluations.
 
typedef VT::TransposeType TransposeType
 Transpose type for expression template evaluations.
 
typedef VT::ElementType ElementType
 Type of the sparse vector elements.
 
typedef VT::ReturnType ReturnType
 Return type for expression template evaluations.
 
typedef VT::CompositeType CompositeType
 Data type for composite expression templates.
 
typedef VT::Reference Reference
 Reference to a non-constant vector value.
 
typedef VT::ConstReference ConstReference
 Reference to a constant vector value.
 
typedef VT::Iterator Iterator
 Iterator over non-constant elements.
 
typedef VT::ConstIterator ConstIterator
 Iterator over constant elements.
 
typedef PT VectorType
 Type of the vector.
 

Public Member Functions

BLAZE_ALWAYS_INLINE VectorTypeoperator~ ()
 Conversion operator for non-constant vectors. More...
 
BLAZE_ALWAYS_INLINE const VectorTypeoperator~ () const
 Conversion operator for constant vectors. More...
 
Data access functions
Reference operator[] (size_t index) const
 Subscript operator for the direct access to vector elements. More...
 
Iterator begin () const
 Returns an iterator to the first element of the represented vector. More...
 
ConstIterator cbegin () const
 Returns an iterator to the first element of the represented vector. More...
 
Iterator end () const
 Returns an iterator just past the last element of the represented vector. More...
 
ConstIterator cend () const
 Returns an iterator just past the last element of the represented vector. More...
 
Utility functions
size_t size () const
 Returns the current size/dimension of the represented vector. More...
 
size_t capacity () const
 Returns the maximum capacity of the represented vector. More...
 
size_t nonZeros () const
 Returns the number of non-zero elements in the represented vector. More...
 
void reset () const
 Reset to the default initial value. More...
 
void clear () const
 Clearing the represented vector. More...
 
Iterator set (size_t index, const ElementType &value) const
 Setting an element of the represented sparse vector. More...
 
Iterator insert (size_t index, const ElementType &value) const
 Inserting an element into the represented sparse vector. More...
 
void append (size_t index, const ElementType &value, bool check=false) const
 Appending an element to the represented sparse vector. More...
 
void erase (size_t index) const
 Erasing an element from the sparse vector. More...
 
Iterator erase (Iterator pos) const
 Erasing an element from the sparse vector. More...
 
Iterator erase (Iterator first, Iterator last) const
 Erasing a range of elements from the compressed vector. More...
 
void resize (size_t n, bool preserve=true) const
 Changing the size of the represented vector. More...
 
void reserve (size_t n) const
 Setting the minimum capacity of the represented vector. More...
 
template<typename Other >
void scale (const Other &scalar) const
 Scaling of the sparse vector by the scalar value scalar ( $ \vec{a}=\vec{b}*s $). More...
 
Lookup functions
Iterator find (size_t index) const
 Searches for a specific vector element. More...
 
Iterator find (size_t i, size_t j) const
 
Iterator lowerBound (size_t index) const
 Returns an iterator to the first index not less then the given index. More...
 
Iterator lowerBound (size_t i, size_t j) const
 
Iterator upperBound (size_t index) const
 Returns an iterator to the first index greater then the given index. More...
 
Iterator upperBound (size_t i, size_t j) const
 

Detailed Description

template<typename PT, typename VT>
class blaze::SparseVectorProxy< PT, VT >

Proxy backend for sparse vector types.

The SparseVectorProxy class serves as a backend for the Proxy class. It is used in case the data type represented by the proxy is a sparse vector and augments the Proxy interface by the complete interface required of sparse vectors.

Member Function Documentation

template<typename PT , typename VT >
void blaze::SparseVectorProxy< PT, VT >::append ( size_t  index,
const ElementType value,
bool  check = false 
) const
inline

Appending an element to the represented sparse vector.

Parameters
indexThe index of the new element. The index has to be in the range $[0..N-1]$.
valueThe value of the element to be appended.
checktrue if the new value should be checked for default values, false if not.
Returns
void

This function provides a very efficient way to fill a compressed vector with elements. It appends a new element to the end of the compressed vector without any memory allocation. Therefore it is strictly necessary to keep the following preconditions in mind:

  • the index of the new element must be strictly larger than the largest index of non-zero elements in the compressed vector
  • the current number of non-zero elements must be smaller than the capacity of the vector

Ignoring these preconditions might result in undefined behavior! The optional check parameter specifies whether the new value should be tested for a default value. If the new value is a default value (for instance 0 in case of an integral element type) the value is not appended. Per default the values are not tested.

Note
: Although append() does not allocate new memory, it still invalidates all iterators returned by the end() functions!
template<typename PT , typename VT >
SparseVectorProxy< PT, VT >::Iterator blaze::SparseVectorProxy< PT, VT >::begin ( ) const
inline

Returns an iterator to the first element of the represented vector.

Returns
Iterator to the first element of the vector.
template<typename PT , typename VT >
size_t blaze::SparseVectorProxy< PT, VT >::capacity ( ) const
inline

Returns the maximum capacity of the represented vector.

Returns
The capacity of the vector.
template<typename PT , typename VT >
SparseVectorProxy< PT, VT >::ConstIterator blaze::SparseVectorProxy< PT, VT >::cbegin ( ) const
inline

Returns an iterator to the first element of the represented vector.

Returns
Iterator to the first element of the vector.
template<typename PT , typename VT >
SparseVectorProxy< PT, VT >::ConstIterator blaze::SparseVectorProxy< PT, VT >::cend ( ) const
inline

Returns an iterator just past the last element of the represented vector.

Returns
Iterator just past the last element of the vector.
template<typename PT , typename VT >
void blaze::SparseVectorProxy< PT, VT >::clear ( ) const
inline

Clearing the represented vector.

Returns
void

This function clears the vector to its default initial state.

template<typename PT , typename VT >
SparseVectorProxy< PT, VT >::Iterator blaze::SparseVectorProxy< PT, VT >::end ( ) const
inline

Returns an iterator just past the last element of the represented vector.

Returns
Iterator just past the last element of the vector.
template<typename PT , typename VT >
void blaze::SparseVectorProxy< PT, VT >::erase ( size_t  index) const
inline

Erasing an element from the sparse vector.

Parameters
indexThe index of the element to be erased. The index has to be in the range $[0..N-1]$.
Returns
void

This function erases an element from the sparse vector.

template<typename PT , typename VT >
SparseVectorProxy< PT, VT >::Iterator blaze::SparseVectorProxy< PT, VT >::erase ( Iterator  pos) const
inline

Erasing an element from the sparse vector.

Parameters
posIterator to the element to be erased.
Returns
Iterator to the element after the erased element.

This function erases an element from the sparse vector.

template<typename PT , typename VT >
SparseVectorProxy< PT, VT >::Iterator blaze::SparseVectorProxy< PT, VT >::erase ( Iterator  first,
Iterator  last 
) const
inline

Erasing a range of elements from the compressed vector.

Parameters
firstIterator to first element to be erased.
lastIterator just past the last element to be erased.
Returns
Iterator to the element after the erased element.

This function erases a range of elements from the sparse vector.

template<typename PT , typename VT >
SparseVectorProxy< PT, VT >::Iterator blaze::SparseVectorProxy< PT, VT >::find ( size_t  index) const
inline

Searches for a specific vector element.

Parameters
indexThe index of the search element. The index has to be in the range $[0..N-1]$.
Returns
Iterator to the element in case the index is found, end() iterator otherwise.

This function can be used to check whether a specific element is contained in the sparse vector. It specifically searches for the element with index index. In case the element is found, the function returns an iterator to the element. Otherwise an iterator just past the last non-zero element of the compressed vector (the end() iterator) is returned. Note that the returned compressed vector iterator is subject to invalidation due to inserting operations via the subscript operator or the insert() function!

template<typename PT , typename VT >
SparseVectorProxy< PT, VT >::Iterator blaze::SparseVectorProxy< PT, VT >::insert ( size_t  index,
const ElementType value 
) const
inline

Inserting an element into the represented sparse vector.

Parameters
indexThe index of the new element. The index has to be in the range $[0..N-1]$.
valueThe value of the element to be inserted.
Returns
Reference to the inserted value.
Exceptions
std::invalid_argumentInvalid compressed vector access index.

This function inserts a new element into the sparse vector. However, duplicate elements are not allowed. In case the sparse vector already contains an element with index index, a std::invalid_argument exception is thrown.

template<typename PT , typename VT >
SparseVectorProxy< PT, VT >::Iterator blaze::SparseVectorProxy< PT, VT >::lowerBound ( size_t  index) const
inline

Returns an iterator to the first index not less then the given index.

Parameters
indexThe index of the search element. The index has to be in the range $[0..N-1]$.
Returns
Iterator to the first index not less then the given index, end() iterator otherwise.

This function returns an iterator to the first element with an index not less then the given index. In combination with the upperBound() function this function can be used to create a pair of iterators specifying a range of indices. Note that the returned compressed vector iterator is subject to invalidation due to inserting operations via the subscript operator or the insert() function!

template<typename PT , typename VT >
size_t blaze::SparseVectorProxy< PT, VT >::nonZeros ( ) const
inline

Returns the number of non-zero elements in the represented vector.

Returns
The number of non-zero elements in the vector.

Note that the number of non-zero elements is always smaller than the current size of the sparse vector.

template<typename PT , typename VT >
SparseVectorProxy< PT, VT >::Reference blaze::SparseVectorProxy< PT, VT >::operator[] ( size_t  index) const
inline

Subscript operator for the direct access to vector elements.

Parameters
indexAccess index. The index has to be in the range $[0..N-1]$.
Returns
Reference to the accessed value.

This function returns a reference to the accessed value at position index. In case the sparse vector does not yet store an element for index index, a new element is inserted into the sparse vector. A more efficient alternative for traversing the non-zero elements of the sparse vector are the begin() and end() functions.

BLAZE_ALWAYS_INLINE VectorType& blaze::Vector< PT , TF >::operator~ ( )
inlineinherited

Conversion operator for non-constant vectors.

Returns
Reference of the actual type of the vector.
BLAZE_ALWAYS_INLINE const VectorType& blaze::Vector< PT , TF >::operator~ ( ) const
inlineinherited

Conversion operator for constant vectors.

Returns
Const reference of the actual type of the vector.
template<typename PT , typename VT >
void blaze::SparseVectorProxy< PT, VT >::reserve ( size_t  n) const
inline

Setting the minimum capacity of the represented vector.

Parameters
nThe new minimum capacity of the vector.
Returns
void

This function increases the capacity of the compressed vector to at least n elements. The current values of the vector elements are preserved.

template<typename PT , typename VT >
void blaze::SparseVectorProxy< PT, VT >::reset ( ) const
inline

Reset to the default initial value.

Returns
void

This function resets all elements of the vector to the default initial values.

template<typename PT , typename VT >
void blaze::SparseVectorProxy< PT, VT >::resize ( size_t  n,
bool  preserve = true 
) const
inline

Changing the size of the represented vector.

Parameters
nThe new size of the vector.
preservetrue if the old values of the vector should be preserved, false if not.
Returns
void

This function changes the size of the vector. Depending on the type of the vector, during this operation new dynamic memory may be allocated in case the capacity of the vector is too small. Note that this function may invalidate all existing views (subvectors, ...) on the vector if it is used to shrink the vector. Additionally, the resize() operation potentially changes all vector elements. In order to preserve the old vector values, the preserve flag can be set to true.

template<typename PT , typename VT >
template<typename Other >
void blaze::SparseVectorProxy< PT, VT >::scale ( const Other &  scalar) const
inline

Scaling of the sparse vector by the scalar value scalar ( $ \vec{a}=\vec{b}*s $).

Parameters
scalarThe scalar value for the vector scaling.
Returns
void
template<typename PT , typename VT >
SparseVectorProxy< PT, VT >::Iterator blaze::SparseVectorProxy< PT, VT >::set ( size_t  index,
const ElementType value 
) const
inline

Setting an element of the represented sparse vector.

Parameters
indexThe index of the new element. The index has to be in the range $[0..N-1]$.
valueThe value of the element to be set.
Returns
Reference to the set value.
Exceptions
std::invalid_argumentInvalid compressed vector access index.

This function sets the value of an element of the sparse vector. In case the sparse vector already contains an element with index index its value is modified, else a new element with the given value is inserted.

template<typename PT , typename VT >
size_t blaze::SparseVectorProxy< PT, VT >::size ( ) const
inline

Returns the current size/dimension of the represented vector.

Returns
The size of the vector.
template<typename PT , typename VT >
SparseVectorProxy< PT, VT >::Iterator blaze::SparseVectorProxy< PT, VT >::upperBound ( size_t  index) const
inline

Returns an iterator to the first index greater then the given index.

Parameters
indexThe index of the search element. The index has to be in the range $[0..N-1]$.
Returns
Iterator to the first index greater then the given index, end() iterator otherwise.

This function returns an iterator to the first element with an index greater then the given index. In combination with the lowerBound() function this function can be used to create a pair of iterators specifying a range of indices. Note that the returned compressed vector iterator is subject to invalidation due to inserting operations via the subscript operator or the insert() function!


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