![]() |
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 | |
typedef VT::ElementType | ElementType |
Type of the sparse vector elements. | |
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 VT | VectorType |
Type of the vector. | |
Public Member Functions | |
BLAZE_ALWAYS_INLINE VectorType & | operator~ () |
Conversion operator for non-constant vectors. More... | |
BLAZE_ALWAYS_INLINE const VectorType & | operator~ () 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 ( ![]() | |
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 |
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.
|
inline |
Appending an element to the represented sparse vector.
index | The index of the new element. The index has to be in the range ![]() |
value | The value of the element to be appended. |
check | true if the new value should be checked for default values, false if not. |
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:
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!
|
inline |
Returns an iterator to the first element of the represented vector.
|
inline |
Returns the maximum capacity of the represented vector.
|
inline |
Returns an iterator to the first element of the represented vector.
|
inline |
Returns an iterator just past the last element of the represented vector.
|
inline |
Clearing the represented vector.
This function clears the vector to its default initial state.
|
inline |
Returns an iterator just past the last element of the represented vector.
|
inline |
Erasing an element from the sparse vector.
index | The index of the element to be erased. The index has to be in the range ![]() |
This function erases an element from the sparse vector.
|
inline |
Erasing an element from the sparse vector.
pos | Iterator to the element to be erased. |
This function erases an element from the sparse vector.
|
inline |
Erasing a range of elements from the compressed vector.
first | Iterator to first element to be erased. |
last | Iterator just past the last element to be erased. |
This function erases a range of elements from the sparse vector.
|
inline |
Searches for a specific vector element.
index | The index of the search element. The index has to be in the range ![]() |
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!
|
inline |
Inserting an element into the represented sparse vector.
index | The index of the new element. The index has to be in the range ![]() |
value | The value of the element to be inserted. |
std::invalid_argument | Invalid 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.
|
inline |
Returns an iterator to the first index not less then the given index.
index | The index of the search element. The index has to be in the range ![]() |
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!
|
inline |
Returns the number of non-zero elements in the represented vector.
Note that the number of non-zero elements is always smaller than the current size of the sparse vector.
|
inline |
Subscript operator for the direct access to vector elements.
index | Access index. The index has to be in the range ![]() |
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.
|
inlineinherited |
Conversion operator for non-constant vectors.
|
inlineinherited |
Conversion operator for constant vectors.
|
inline |
Setting the minimum capacity of the represented vector.
n | The new minimum capacity of the vector. |
This function increases the capacity of the compressed vector to at least n elements. The current values of the vector elements are preserved.
|
inline |
Reset to the default initial value.
This function resets all elements of the vector to the default initial values.
|
inline |
Changing the size of the represented vector.
n | The new size of the vector. |
preserve | true if the old values of the vector should be preserved, false if not. |
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.
|
inline |
Scaling of the sparse vector by the scalar value scalar ( ).
scalar | The scalar value for the vector scaling. |
|
inline |
Setting an element of the represented sparse vector.
index | The index of the new element. The index has to be in the range ![]() |
value | The value of the element to be set. |
std::invalid_argument | Invalid 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.
|
inline |
Returns the current size/dimension of the represented vector.
|
inline |
Returns an iterator to the first index greater then the given index.
index | The index of the search element. The index has to be in the range ![]() |
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!