![]() |
Blaze 3.9
|
Proxy backend for sparse vector types. More...
#include <SparseVectorProxy.h>
Inherits blaze::SparseVector< PT, IsRowVector_v< VT > >.
Public Types | |
using | ResultType = ResultType_t< VT > |
Result type for expression template evaluations. | |
using | TransposeType = TransposeType_t< VT > |
Transpose type for expression template evaluations. | |
using | ElementType = ElementType_t< VT > |
Type of the sparse vector elements. | |
using | ReturnType = ReturnType_t< VT > |
Return type for expression template evaluations. | |
using | CompositeType = CompositeType_t< VT > |
Data type for composite expression templates. | |
using | Reference = Reference_t< VT > |
Reference to a non-constant vector value. | |
using | ConstReference = ConstReference_t< VT > |
Reference to a constant vector value. | |
using | Iterator = Iterator_t< VT > |
Iterator over non-constant elements. | |
using | ConstIterator = ConstIterator_t< VT > |
Iterator over constant elements. | |
using | VectorType = PT |
Type of the vector. | |
Public Member Functions | |
Data access functions | |
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... | |
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... | |
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... | |
Insertion functions | |
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... | |
Erase functions | |
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_t< IsIntegral_v<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... | |
Lookup functions | |
Iterator | find (size_t index) const |
Searches for a specific vector element. More... | |
Iterator | lowerBound (size_t index) const |
Returns an iterator to the first index not less then the given index. More... | |
Iterator | upperBound (size_t index) const |
Returns an iterator to the first index greater then the given index. More... | |
Numeric functions | |
template<typename Other > | |
void | scale (const Other &scalar) const |
Scaling of the sparse vector by the scalar value scalar ( ![]() | |
Conversion operators | |
BLAZE_ALWAYS_INLINE constexpr PT & | operator~ () noexcept |
CRTP-based conversion operation for non-constant vectors. More... | |
BLAZE_ALWAYS_INLINE constexpr const PT & | operator~ () const noexcept |
CRTP-based conversion operation for constant vectors. More... | |
constexpr PT & | operator* () noexcept |
CRTP-based conversion operation for non-constant vectors. More... | |
constexpr const PT & | operator* () const noexcept |
CRTP-based conversion operation for constant vectors. More... | |
Static Public Attributes | |
static constexpr bool | smpAssignable = VT::smpAssignable |
Compilation flag for SMP assignments. | |
static constexpr bool | transposeFlag |
Transpose flag of the vector. | |
Protected Member Functions | |
Special member functions | |
SparseVectorProxy ()=default | |
SparseVectorProxy (const SparseVectorProxy &)=default | |
SparseVectorProxy (SparseVectorProxy &&)=default | |
~SparseVectorProxy ()=default | |
SparseVectorProxy & | operator= (const SparseVectorProxy &)=default |
SparseVectorProxy & | operator= (SparseVectorProxy &&)=default |
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. |
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:
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.
|
inline |
Checked access to the vector elements.
index | Access index. The index has to be in the range ![]() |
std::invalid_argument | Invalid access to restricted element. |
std::out_of_range | Invalid vector access index. |
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. In contrast to the subscript operator this function always performs a check of the given access index.
|
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 a range of elements from the sparse vector.
first | Iterator to first element to be erased. |
last | Iterator just past the last element to be erased. |
std::invalid_argument | Invalid access to restricted element. |
This function erases a range of elements from the sparse vector.
|
inline |
Erasing specific elements from a range of the sparse vector.
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. |
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.
|
inline |
Erasing an element from the sparse vector.
pos | Iterator to the element to be erased. |
std::invalid_argument | Invalid access to restricted element. |
This function erases an element from the sparse vector.
|
inline |
Erasing specific elements from the sparse vector.
predicate | The unary predicate for the element selection. |
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.
|
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 ![]() |
std::invalid_argument | Invalid access to restricted element. |
This function erases an element 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 sparse vector (the end() iterator) is returned. Note that the returned sparse vector iterator is subject to invalidation due to inserting operations via the subscript operator, the set() function 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 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.
|
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 sparse vector iterator is subject to invalidation due to inserting operations via the subscript operator, the set() function 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.
|
constexprnoexceptinherited |
CRTP-based conversion operation for constant vectors.
This operator performs the CRTP-based type-safe downcast to the actual type VT of the vector. It will return a constant reference to the actual type VT.
|
constexprnoexceptinherited |
CRTP-based conversion operation for non-constant vectors.
This operator performs the CRTP-based type-safe downcast to the actual type VT of the vector. It will return a mutable reference to the actual type VT.
|
inline |
Subscript operator for the direct access to vector elements.
index | Access index. The index has to be in the range ![]() |
std::invalid_argument | Invalid access to restricted element. |
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.
|
constexprnoexceptinherited |
CRTP-based conversion operation for constant vectors.
This operator performs the CRTP-based type-safe downcast to the actual type VT of the vector. It will return a constant reference to the actual type VT.
|
constexprnoexceptinherited |
CRTP-based conversion operation for non-constant vectors.
This operator performs the CRTP-based type-safe downcast to the actual type VT of the vector. It will return a mutable reference to the actual type VT.
|
inline |
Setting the minimum capacity of the represented vector.
n | The new minimum capacity of the vector. |
std::invalid_argument | Invalid access to restricted element. |
This function increases the capacity of the sparse 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. |
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.
|
inline |
Scaling of the sparse vector by the scalar value scalar ( ).
scalar | The scalar value for the vector scaling. |
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.
|
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 access to restricted element. |
std::invalid_argument | Invalid sparse 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 sparse vector iterator is subject to invalidation due to inserting operations via the subscript operator, the set() function or the insert() function!