![]() |
Blaze 3.9
|
Efficient implementation of an arbitrary sized sparse vector. More...
#include <CompressedVector.h>
Inherits blaze::SparseVector< CompressedVector< Type, TF, Tag >, TF >.
Classes | |
struct | Rebind |
Rebind mechanism to obtain a CompressedVector with different data/element type. More... | |
struct | Resize |
Resize mechanism to obtain a CompressedVector with a different fixed number of elements. More... | |
Public Types | |
using | This = CompressedVector< Type, TF, Tag > |
Type of this CompressedVector instance. | |
using | BaseType = SparseVector< This, TF > |
Base type of this CompressedVector instance. | |
using | ResultType = This |
Result type for expression template evaluations. | |
using | TransposeType = CompressedVector< Type,!TF, Tag > |
Transpose type for expression template evaluations. | |
using | ElementType = Type |
Type of the compressed vector elements. | |
using | TagType = Tag |
Tag type of this CompressedVector instance. | |
using | ReturnType = const Type & |
Return type for expression template evaluations. | |
using | CompositeType = const CompressedVector & |
Data type for composite expression templates. | |
using | Reference = VectorAccessProxy< This > |
Reference to a non-constant vector value. | |
using | ConstReference = const Type & |
Reference to a constant vector value. | |
using | Iterator = Element * |
Iterator over non-constant elements. | |
using | ConstIterator = const Element * |
Iterator over constant elements. | |
using | VectorType = CompressedVector< Type, TF, Tag > |
Type of the vector. | |
Public Member Functions | |
template<typename VT > | |
CompressedVector< Type, TF, Tag > & | operator= (const DenseVector< VT, TF > &rhs) & |
Assignment operator for dense vectors. More... | |
template<typename VT > | |
CompressedVector< Type, TF, Tag > & | operator= (const SparseVector< VT, TF > &rhs) & |
Assignment operator for different sparse vectors. More... | |
template<typename VT > | |
CompressedVector< Type, TF, Tag > & | operator+= (const Vector< VT, TF > &rhs) & |
Addition assignment operator for the addition of a vector ( ![]() | |
template<typename VT > | |
CompressedVector< Type, TF, Tag > & | operator-= (const Vector< VT, TF > &rhs) & |
Subtraction assignment operator for the subtraction of a vector ( ![]() | |
template<typename VT > | |
CompressedVector< Type, TF, Tag > & | operator*= (const DenseVector< VT, TF > &rhs) & |
Multiplication assignment operator for the multiplication of a dense vector ( ![]() | |
template<typename VT > | |
CompressedVector< Type, TF, Tag > & | operator*= (const SparseVector< VT, TF > &rhs) & |
Multiplication assignment operator for the multiplication of a sparse vector ( ![]() | |
template<typename VT > | |
CompressedVector< Type, TF, Tag > & | operator/= (const DenseVector< VT, TF > &rhs) & |
Division assignment operator for the division of a dense vector ( ![]() | |
template<typename VT > | |
CompressedVector< Type, TF, Tag > & | operator%= (const Vector< VT, TF > &rhs) & |
Cross product assignment operator for the multiplication of a vector ( ![]() | |
template<typename Other > | |
CompressedVector< Type, TF, Tag > & | scale (const Other &scalar) |
Scaling of the compressed vector by the scalar value scalar ( ![]() | |
Constructors | |
CompressedVector () noexcept | |
The default constructor for CompressedVector. | |
CompressedVector (size_t size) noexcept | |
Constructor for a compressed vector of size n. More... | |
CompressedVector (size_t size, size_t nonzeros) | |
Constructor for a compressed vector of size n. More... | |
CompressedVector (initializer_list< Type > list) | |
List initialization of all vector elements. More... | |
CompressedVector (const CompressedVector &sv) | |
The copy constructor for CompressedVector. More... | |
CompressedVector (CompressedVector &&sv) noexcept | |
The move constructor for CompressedVector. More... | |
template<typename VT > | |
CompressedVector (const DenseVector< VT, TF > &dv) | |
Conversion constructor from dense vectors. More... | |
template<typename VT > | |
CompressedVector (const SparseVector< VT, TF > &sv) | |
Conversion constructor from different sparse vectors. More... | |
Destructor | |
~CompressedVector () | |
The destructor for CompressedVector. | |
Data access functions | |
Reference | operator[] (size_t index) noexcept |
Subscript operator for the direct access to the compressed vector elements. More... | |
ConstReference | operator[] (size_t index) const noexcept |
Subscript operator for the direct access to the compressed vector elements. More... | |
Reference | at (size_t index) |
Checked access to the compressed vector elements. More... | |
ConstReference | at (size_t index) const |
Checked access to the compressed vector elements. More... | |
Iterator | begin () noexcept |
Returns an iterator to the first non-zero element of the compressed vector. More... | |
ConstIterator | begin () const noexcept |
Returns an iterator to the first non-zero element of the compressed vector. More... | |
ConstIterator | cbegin () const noexcept |
Returns an iterator to the first non-zero element of the compressed vector. More... | |
Iterator | end () noexcept |
Returns an iterator just past the last non-zero element of the compressed vector. More... | |
ConstIterator | end () const noexcept |
Returns an iterator just past the last non-zero element of the compressed vector. More... | |
ConstIterator | cend () const noexcept |
Returns an iterator just past the last non-zero element of the compressed vector. More... | |
Assignment operators | |
CompressedVector & | operator= (initializer_list< Type > list) & |
List assignment to all vector elements. More... | |
CompressedVector & | operator= (const CompressedVector &rhs) & |
Copy assignment operator for CompressedVector. More... | |
CompressedVector & | operator= (CompressedVector &&rhs) &noexcept |
template<typename VT > | |
CompressedVector & | operator= (const DenseVector< VT, TF > &rhs) & |
template<typename VT > | |
CompressedVector & | operator= (const SparseVector< VT, TF > &rhs) & |
template<typename VT > | |
CompressedVector & | operator+= (const Vector< VT, TF > &rhs) & |
template<typename VT > | |
CompressedVector & | operator-= (const Vector< VT, TF > &rhs) & |
template<typename VT > | |
CompressedVector & | operator*= (const DenseVector< VT, TF > &rhs) & |
template<typename VT > | |
CompressedVector & | operator*= (const SparseVector< VT, TF > &rhs) & |
template<typename VT > | |
CompressedVector & | operator/= (const DenseVector< VT, TF > &rhs) & |
template<typename VT > | |
CompressedVector & | operator%= (const Vector< VT, TF > &rhs) & |
Erase functions | |
void | erase (size_t index) |
Erasing an element from the compressed vector. More... | |
Iterator | erase (Iterator pos) |
Erasing an element from the compressed vector. More... | |
Iterator | erase (Iterator first, Iterator last) |
Erasing a range of elements from the compressed vector. More... | |
template<typename Pred , typename = DisableIf_t< IsIntegral_v<Pred> >> | |
void | erase (Pred predicate) |
Erasing specific elements from the compressed vector. More... | |
template<typename Pred > | |
void | erase (Iterator first, Iterator last, Pred predicate) |
Erasing specific elements from a range of the compressed vector. More... | |
Lookup functions | |
Iterator | find (size_t index) |
Searches for a specific vector element. More... | |
ConstIterator | find (size_t index) const |
Searches for a specific vector element. More... | |
Iterator | lowerBound (size_t index) |
Returns an iterator to the first index not less then the given index. More... | |
ConstIterator | lowerBound (size_t index) const |
Returns an iterator to the first index not less then the given index. More... | |
Iterator | upperBound (size_t index) |
Returns an iterator to the first index greater then the given index. More... | |
ConstIterator | upperBound (size_t index) const |
Returns an iterator to the first index greater then the given index. More... | |
Numeric functions | |
template<typename Other > | |
CompressedVector & | scale (const Other &scalar) |
Expression template evaluation functions | |
template<typename Other > | |
bool | canAlias (const Other *alias) const noexcept |
Returns whether the vector can alias with the given address alias. More... | |
template<typename Other > | |
bool | isAliased (const Other *alias) const noexcept |
Returns whether the vector is aliased with the given address alias. More... | |
bool | canSMPAssign () const noexcept |
Returns whether the vector can be used in SMP assignments. More... | |
template<typename VT > | |
void | assign (const DenseVector< VT, TF > &rhs) |
Default implementation of the assignment of a dense vector. More... | |
template<typename VT > | |
void | assign (const SparseVector< VT, TF > &rhs) |
Default implementation of the assignment of a sparse vector. More... | |
template<typename VT > | |
void | addAssign (const DenseVector< VT, TF > &rhs) |
Default implementation of the addition assignment of a dense vector. More... | |
template<typename VT > | |
void | addAssign (const SparseVector< VT, TF > &rhs) |
Default implementation of the addition assignment of a sparse vector. More... | |
template<typename VT > | |
void | subAssign (const DenseVector< VT, TF > &rhs) |
Default implementation of the subtraction assignment of a dense vector. More... | |
template<typename VT > | |
void | subAssign (const SparseVector< VT, TF > &rhs) |
Default implementation of the subtraction assignment of a sparse vector. More... | |
template<typename VT > | |
void | multAssign (const DenseVector< VT, TF > &rhs) |
Default implementation of the multiplication assignment of a dense vector. More... | |
template<typename VT > | |
void | divAssign (const DenseVector< VT, TF > &rhs) |
Default implementation of the division assignment of a dense vector. More... | |
Conversion operators | |
BLAZE_ALWAYS_INLINE constexpr CompressedVector< Type, TF, Tag > & | operator~ () noexcept |
CRTP-based conversion operation for non-constant vectors. More... | |
BLAZE_ALWAYS_INLINE constexpr const CompressedVector< Type, TF, Tag > & | operator~ () const noexcept |
CRTP-based conversion operation for constant vectors. More... | |
constexpr CompressedVector< Type, TF, Tag > & | operator* () noexcept |
CRTP-based conversion operation for non-constant vectors. More... | |
constexpr const CompressedVector< Type, TF, Tag > & | operator* () const noexcept |
CRTP-based conversion operation for constant vectors. More... | |
Static Public Attributes | |
static constexpr bool | smpAssignable = !IsSMPAssignable_v<Type> |
Compilation flag for SMP assignments. More... | |
static constexpr bool | transposeFlag |
Transpose flag of the vector. | |
Private Types | |
using | ElementBase = ValueIndexPair< Type > |
Base class for the compressed vector element. | |
using | IteratorBase = ElementBase * |
Iterator over non-constant base elements. | |
Member variables | |
size_t | size_ |
The current size/dimension of the compressed vector. | |
size_t | capacity_ |
The maximum capacity of the compressed vector. | |
Iterator | begin_ |
Pointer to the first non-zero element of the compressed vector. | |
Iterator | end_ |
Pointer one past the last non-zero element of the compressed vector. | |
static const Type | zero_ {} |
Neutral element for accesses to zero elements. | |
Utility functions | |
size_t | size () const noexcept |
Returns the current size/dimension of the compressed vector. More... | |
size_t | capacity () const noexcept |
Returns the maximum capacity of the compressed vector. More... | |
size_t | nonZeros () const |
Returns the number of non-zero elements in the compressed vector. More... | |
void | reset () |
Reset to the default initial values. More... | |
void | clear () |
Clearing the compressed vector. More... | |
void | resize (size_t n, bool preserve=true) |
Changing the size of the compressed vector. More... | |
void | reserve (size_t n) |
Setting the minimum capacity of the compressed vector. More... | |
void | shrinkToFit () |
Requesting the removal of unused capacity. More... | |
void | swap (CompressedVector &sv) noexcept |
Swapping the contents of two compressed vectors. More... | |
size_t | extendCapacity () const noexcept |
Calculating a new vector capacity. More... | |
Iterator | castDown (IteratorBase it) const noexcept |
Performs a down-cast of the given iterator. More... | |
IteratorBase | castUp (Iterator it) const noexcept |
Performs an up-cast of the given iterator. More... | |
Insertion functions | |
Iterator | set (size_t index, const Type &value) |
Setting an element of the compressed vector. More... | |
Iterator | insert (size_t index, const Type &value) |
Inserting an element into the compressed vector. More... | |
void | append (size_t index, const Type &value, bool check=false) |
Appending an element to the compressed vector. More... | |
Iterator | insert (Iterator pos, size_t index, const Type &value) |
Inserting an element into the compressed vector. More... | |
Efficient implementation of an arbitrary sized sparse vector.
The CompressedVector class is the representation of an arbitrarily sized sparse vector, which stores only non-zero elements of arbitrary type. The type of the elements, the transpose flag, and the group tag of the vector can be specified via the three template parameters:
Inserting/accessing elements in a compressed vector can be done by several alternative functions. The following example demonstrates all options:
The use of CompressedVector is very natural and intuitive. All operations (addition, subtraction, multiplication, scaling, ...) can be performed on all possible combinations of dense and sparse vectors with fitting element types. The following example gives an impression of the use of CompressedVector:
|
inlineexplicitnoexcept |
Constructor for a compressed vector of size n.
n | The size of the vector. |
|
inline |
Constructor for a compressed vector of size n.
n | The size of the vector. |
nonzeros | The number of expected non-zero elements. |
|
inline |
List initialization of all vector elements.
list | The initializer list. |
This assignment operator provides the option to explicitly initialize the elements of the vector within a constructor call:
The vector is sized according to the size of the initializer list and all its elements are initialized by the non-zero elements of the given initializer list.
|
inline |
The copy constructor for CompressedVector.
sv | Compressed vector to be copied. |
The copy constructor is explicitly defined due to the required dynamic memory management and in order to enable/facilitate NRV optimization.
|
inlinenoexcept |
The move constructor for CompressedVector.
sv | The compressed vector to be moved into this instance. |
|
inline |
Conversion constructor from dense vectors.
dv | Dense vector to be copied. |
|
inline |
Conversion constructor from different sparse vectors.
sv | Sparse vector to be copied. |
|
inline |
Default implementation of the addition assignment of a dense vector.
rhs | The right-hand side dense vector to be added. |
This function must NOT be called explicitly! It is used internally for the performance optimized evaluation of expression templates. Calling this function explicitly might result in erroneous results and/or in compilation errors. Instead of using this function use the assignment operator.
|
inline |
Default implementation of the addition assignment of a sparse vector.
rhs | The right-hand side sparse vector to be added. |
This function must NOT be called explicitly! It is used internally for the performance optimized evaluation of expression templates. Calling this function explicitly might result in erroneous results and/or in compilation errors. Instead of using this function use the assignment operator.
|
inline |
Appending an element to the compressed 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.
|
inline |
Default implementation of the assignment of a dense vector.
rhs | The right-hand side dense vector to be assigned. |
This function must NOT be called explicitly! It is used internally for the performance optimized evaluation of expression templates. Calling this function explicitly might result in erroneous results and/or in compilation errors. Instead of using this function use the assignment operator.
|
inline |
Default implementation of the assignment of a sparse vector.
rhs | The right-hand side sparse vector to be assigned. |
This function must NOT be called explicitly! It is used internally for the performance optimized evaluation of expression templates. Calling this function explicitly might result in erroneous results and/or in compilation errors. Instead of using this function use the assignment operator.
|
inline |
Checked access to the compressed vector elements.
index | Access index. The index has to be in the range ![]() |
std::out_of_range | Invalid compressed vector access index. |
This function returns a reference to the accessed value at position index. In case the compressed vector does not yet store an element for index index, a new element is inserted into the compressed vector. In contrast to the subscript operator this function always performs a check of the given access index.
|
inline |
Checked access to the compressed vector elements.
index | Access index. The index has to be in the range ![]() |
std::out_of_range | Invalid compressed vector access index. |
In contrast to the subscript operator this function always performs a check of the given access indices.
|
inlinenoexcept |
Returns an iterator to the first non-zero element of the compressed vector.
|
inlinenoexcept |
Returns an iterator to the first non-zero element of the compressed vector.
|
inlinenoexcept |
Returns whether the vector can alias with the given address alias.
alias | The alias to be checked. |
This function returns whether the given address can alias with the vector. In contrast to the isAliased() function this function is allowed to use compile time expressions to optimize the evaluation.
|
inlinenoexcept |
Returns whether the vector can be used in SMP assignments.
This function returns whether the vector can be used in SMP assignments. In contrast to the smpAssignable member enumeration, which is based solely on compile time information, this function additionally provides runtime information (as for instance the current size of the vector).
|
inlinenoexcept |
Returns the maximum capacity of the compressed vector.
|
inlineprivatenoexcept |
Performs a down-cast of the given iterator.
This function performs a down-cast of the given iterator to base elements to an iterator to derived elements.
|
inlineprivatenoexcept |
Performs an up-cast of the given iterator.
This function performs an up-cast of the given iterator to derived elements to an iterator to base elements.
|
inlinenoexcept |
Returns an iterator to the first non-zero element of the compressed vector.
|
inlinenoexcept |
Returns an iterator just past the last non-zero element of the compressed vector.
|
inline |
Clearing the compressed vector.
After the clear() function, the size of the compressed vector is 0.
|
inline |
Default implementation of the division assignment of a dense vector.
rhs | The right-hand side dense vector divisor. |
This function must NOT be called explicitly! It is used internally for the performance optimized evaluation of expression templates. Calling this function explicitly might result in erroneous results and/or in compilation errors. Instead of using this function use the assignment operator.
|
inlinenoexcept |
Returns an iterator just past the last non-zero element of the compressed vector.
|
inlinenoexcept |
Returns an iterator just past the last non-zero element of the compressed 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 compressed vector.
|
inline |
Erasing specific elements from a range of the compressed 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 compressed 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. The following example demonstrates how to remove all elements that are smaller than a certain threshold value:
|
inline |
Erasing an element from the compressed vector.
pos | Iterator to the element to be erased. |
This function erases an element from the compressed vector.
|
inline |
Erasing specific elements from the compressed vector.
predicate | The unary predicate for the element selection. |
This function erases specific elements from the compressed 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. The following example demonstrates how to remove all elements that are smaller than a certain threshold value:
|
inline |
Erasing an element from the compressed 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 compressed vector.
|
inlineprivatenoexcept |
Calculating a new vector capacity.
This function calculates a new vector capacity based on the current capacity of the sparse vector. Note that the new capacity is restricted to the interval .
|
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, the set() function or the insert() function!
|
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, the set() function or the insert() function!
|
private |
Inserting an element into the compressed vector.
pos | The position of the new element. |
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. |
|
inline |
Inserting an element into the compressed 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 compressed 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.
|
inlinenoexcept |
Returns whether the vector is aliased with the given address alias.
alias | The alias to be checked. |
This function returns whether the given address is aliased with the vector. In contrast to the canAlias() function this function is not allowed to use compile time expressions to optimize the evaluation.
|
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, the set() function or the insert() function!
|
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, the set() function or the insert() function!
|
inline |
Default implementation of the multiplication assignment of a dense vector.
rhs | The right-hand side dense vector to be multiplied. |
This function must NOT be called explicitly! It is used internally for the performance optimized evaluation of expression templates. Calling this function explicitly might result in erroneous results and/or in compilation errors. Instead of using this function use the assignment operator.
|
inline |
Returns the number of non-zero elements in the compressed vector.
Note that the number of non-zero elements is always smaller than the current size of the compressed vector.
|
inline |
Cross product assignment operator for the multiplication of a vector ( ).
rhs | The right-hand side vector for the cross product. |
std::invalid_argument | Invalid vector size for cross product. |
In case the current size of any of the two vectors is not equal to 3, a std::invalid_argument exception is thrown.
|
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 |
Multiplication assignment operator for the multiplication of a dense vector ( ).
rhs | The right-hand side dense vector to be multiplied with the compressed vector. |
std::invalid_argument | Vector sizes do not match. |
In case the current sizes of the two vectors don't match, a std::invalid_argument exception is thrown.
|
inline |
Multiplication assignment operator for the multiplication of a sparse vector ( ).
rhs | The right-hand side sparse vector to be multiplied with the compressed vector. |
std::invalid_argument | Vector sizes do not match. |
In case the current sizes of the two vectors don't match, a std::invalid_argument exception is thrown.
|
inline |
Addition assignment operator for the addition of a vector ( ).
rhs | The right-hand side vector to be added to the compressed vector. |
std::invalid_argument | Vector sizes do not match. |
In case the current sizes of the two vectors don't match, a std::invalid_argument exception is thrown.
|
inline |
Subtraction assignment operator for the subtraction of a vector ( ).
rhs | The right-hand side vector to be subtracted from the compressed vector. |
std::invalid_argument | Vector sizes do not match. |
In case the current sizes of the two vectors don't match, a std::invalid_argument exception is thrown.
|
inline |
Division assignment operator for the division of a dense vector ( ).
rhs | The right-hand side dense vector divisor. |
std::invalid_argument | Vector sizes do not match. |
In case the current sizes of the two vectors don't match, a std::invalid_argument exception is thrown.
|
inline |
Copy assignment operator for CompressedVector.
rhs | Compressed vector to be copied. |
The compressed vector is resized according to the given compressed vector and initialized as a copy of this vector.
|
inline |
Assignment operator for dense vectors.
rhs | Dense vector to be copied. |
The vector is resized according to the given dense vector and initialized as a copy of this vector.
|
inline |
Assignment operator for different sparse vectors.
rhs | Sparse vector to be copied. |
The vector is resized according to the given sparse vector and initialized as a copy of this vector.
|
inline |
List assignment to all vector elements.
list | The initializer list. |
This assignment operator offers the option to directly assign to all elements of the vector by means of an initializer list:
The vector is resized according to the size of the initializer list and all its elements are assigned the non-zero values from the given initializer list.
|
inlinenoexcept |
Subscript operator for the direct access to the compressed vector elements.
index | Access index. The index has to be in the range ![]() |
|
inlinenoexcept |
Subscript operator for the direct access to the compressed 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 compressed vector does not yet store an element for index index, a new element is inserted into the compressed vector. An 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.
void blaze::CompressedVector< Type, TF, Tag >::reserve | ( | size_t | n | ) |
Setting the minimum capacity of the compressed vector.
n | The new minimum capacity of the compressed 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 values.
|
inline |
Changing the size of the compressed vector.
n | The new size of the compressed vector. |
preserve | true if the old values of the vector should be preserved, false if not. |
This function resizes the compressed vector using the given size to n. During this operation, new dynamic memory may be allocated in case the capacity of the compressed 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 compressed vector by the scalar value scalar ( ).
scalar | The scalar value for the vector scaling. |
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 compressed vector.
index | The index of the element. The index has to be in the range ![]() |
value | The value of the element to be set. |
This function sets the value of an element of the compressed 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 |
Requesting the removal of unused capacity.
This function minimizes the capacity of the vector by removing unused capacity. Please note that in case a reallocation occurs, all iterators (including end() iterators), all pointers and references to elements of this vector are invalidated.
|
inlinenoexcept |
Returns the current size/dimension of the compressed vector.
|
inline |
Default implementation of the subtraction assignment of a dense vector.
rhs | The right-hand side dense vector to be subtracted. |
This function must NOT be called explicitly! It is used internally for the performance optimized evaluation of expression templates. Calling this function explicitly might result in erroneous results and/or in compilation errors. Instead of using this function use the assignment operator.
|
inline |
Default implementation of the subtraction assignment of a sparse vector.
rhs | The right-hand side sparse vector to be subtracted. |
This function must NOT be called explicitly! It is used internally for the performance optimized evaluation of expression templates. Calling this function explicitly might result in erroneous results and/or in compilation errors. Instead of using this function use the assignment operator.
|
inlinenoexcept |
Swapping the contents of two compressed vectors.
sv | The compressed vector to be swapped. |
|
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, the set() function or the insert() function!
|
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, the set() function or the insert() function!
|
staticconstexpr |
Compilation flag for SMP assignments.
The smpAssignable compilation flag indicates whether the vector can be used in SMP (shared memory parallel) assignments (both on the left-hand and right-hand side of the assignment).