|
BLAZE_ALWAYS_INLINE VectorType & | operator~ () noexcept |
| Conversion operator for non-constant vectors. More...
|
|
BLAZE_ALWAYS_INLINE const VectorType & | operator~ () const noexcept |
| Conversion operator for constant vectors. More...
|
|
|
Reference | operator[] (size_t index) const |
| Subscript operator for the direct access to vector elements. More...
|
|
Reference | at (size_t index) const |
| Checked access to the 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...
|
|
|
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...
|
|
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...
|
|
|
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 sparse vector. More...
|
|
template<typename Pred , typename = DisableIf_< IsIntegral<Pred> >> |
void | erase (Pred predicate) |
| Erasing specific elements from the sparse vector. More...
|
|
template<typename Pred > |
void | erase (Iterator first, Iterator last, Pred predicate) |
| Erasing specific elements from a range of the sparse vector. More...
|
|
|
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 |
|
|
template<typename Other > |
void | scale (const Other &scalar) const |
| Scaling of the sparse vector by the scalar value scalar ( ). More...
|
|
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.
template<typename PT , typename VT >
Appending an element to the represented sparse vector.
- Parameters
-
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. |
- Returns
- void
- Exceptions
-
std::invalid_argument | Invalid access to restricted element. |
This function provides a very efficient way to fill a sparse vector with elements. It appends a new element to the end of the sparse 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 sparse 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 >
template<typename Pred , typename >
Erasing specific elements from the sparse vector.
- Parameters
-
predicate | The unary predicate for the element selection. |
- Returns
- void.
This function erases specific elements from the sparse vector. The elements are selected by the given unary predicate predicate, which is expected to accept a single argument of the type of the elements and to be pure.
- Note
- The predicate is required to be pure, i.e. to produce deterministic results for elements with the same value. The attempt to use an impure predicate leads to undefined behavior!
template<typename PT , typename VT >
template<typename Pred >
Erasing specific elements from a range of the sparse vector.
- Parameters
-
first | Iterator to first element of the range. |
last | Iterator just past the last element of the range. |
predicate | The unary predicate for the element selection. |
- Returns
- void.
This function erases specific elements from a range of elements of the sparse vector. The elements are selected by the given unary predicate predicate, which is expected to accept a single argument of the type of the elements and to be pure.
- Note
- The predicate is required to be pure, i.e. to produce deterministic results for elements with the same value. The attempt to use an impure predicate leads to undefined behavior!
template<typename PT , typename VT >
Inserting an element into the represented sparse vector.
- Parameters
-
index | The index of the new element. The index has to be in the range . |
value | The value of the element to be inserted. |
- Returns
- Reference to the inserted value.
- Exceptions
-
std::invalid_argument | Invalid access to restricted element. |
std::invalid_argument | Invalid sparse 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 >
Changing the size of the represented vector.
- Parameters
-
n | The new size of the vector. |
preserve | true if the old values of the vector should be preserved, false if not. |
- Returns
- void
- Exceptions
-
std::invalid_argument | Invalid access to restricted element. |
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 >
Scaling of the sparse vector by the scalar value scalar (
).
- Parameters
-
scalar | The scalar value for the vector scaling. |
- Returns
- void
- Exceptions
-
std::invalid_argument | Invalid access to restricted element. |
This function scales the vector by applying the given scalar value scalar to each element of the vector. For built-in and complex
data types it has the same effect as using the multiplication assignment operator.