VCTR
Loading...
Searching...
No Matches
vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType > Class Template Reference

The base class to all one dimensional containers and views in the VCTR project. More...

Inheritance diagram for vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >:
vctr::Config vctr::StorageInfo< StorageType > vctr::Array< std::unique_ptr< OwnedElementType >, extent > vctr::Vector< std::unique_ptr< OwnedElementType > > vctr::Array< ElementType, extent, storageExtent > vctr::Span< ElementType, extent, StorageInfoType > vctr::Vector< ElementType, Allocator > vctr::OwnedArray< OwnedElementType, extent > vctr::OwnedVector< OwnedElementType >

Public Types

using value_type = std::remove_cv_t< ElementType >
 

Public Member Functions

constexpr size_t size () const noexcept
 Returns the number of elements.
 
constexpr bool empty () const noexcept
 Checks whether the container is empty.
 
constexpr size_t sizeInBytes () const noexcept
 Returns the container size in bytes.
 
constexpr size_t backIdx () const noexcept
 Returns the index referring to the last element in the vector.
 
constexpr auto & operator[] (size_t i)
 Returns a reference to element i.
 
constexpr auto & operator[] (size_t i) const
 Returns a reference to element i.
 
constexpr auto & at (size_t i)
 Returns a reference to element i.
 
constexpr auto & at (size_t i) const
 Returns a reference to element i.
 
constexpr auto && front ()
 Returns a reference to the first element.
 
constexpr auto && front () const
 Returns a reference to the first element.
 
constexpr auto && back ()
 Returns a reference to the last element.
 
constexpr auto && back () const
 Returns a reference to the last element.
 
VCTR_FORCEDINLINE constexpr auto * data ()
 Returns a raw pointer to the underlying storage.
 
VCTR_FORCEDINLINE constexpr auto * data () const
 Returns a raw pointer to the underlying storage.
 
constexpr auto begin ()
 Returns an iterator to the begin of the storage.
 
constexpr auto begin () const
 Returns a const iterator to the begin of the storage.
 
constexpr auto end ()
 Returns an iterator to the first element behind the storage.
 
constexpr auto end () const
 Returns a const iterator to the first element behind the storage.
 
constexpr auto rbegin ()
 Returns a reverse iterator to the last element in the storage.
 
constexpr auto rbegin () const
 Returns a const reverse iterator to the last element in the storage.
 
constexpr auto rend ()
 Returns a reverse iterator to the element before the first element in the storage.
 
constexpr auto rend () const
 Returns a const reverse iterator to the element before the first element in the storage.
 
template<size_t startIdx>
constexpr auto subSpan ()
 Returns a Span that views a portion of this instance, starting at startIdx with a length of size() - startIdx.
 
template<size_t startIdx>
constexpr auto subSpan () const
 Returns a Span that views a portion of this instance, starting at startIdx with a length of size() - startIdx.
 
constexpr auto subSpan (size_t startIdx)
 Returns a Span that views a portion of this instance, starting at startIdx with a length of size() - startIdx.
 
constexpr auto subSpan (size_t startIdx) const
 Returns a Span that views a portion of this instance, starting at startIdx with a length of size() - startIdx.
 
template<size_t startIdx, size_t numElements>
constexpr auto subSpan ()
 Returns a Span that views a portion of this instance, starting at startIdx with a length of numElements.
 
template<size_t startIdx, size_t numElements>
constexpr auto subSpan () const
 Returns a Span that views a portion of this instance, starting at startIdx with a length of numElements.
 
constexpr auto subSpan (size_t startIdx, size_t numElements)
 Returns a Span that views a portion of this instance, starting at startIdx with a length of numElements.
 
constexpr auto subSpan (size_t startIdx, size_t numElements) const
 Returns a Span that views a portion of this instance, starting at startIdx with a length of numElements.
 
constexpr void assign (std::initializer_list< ElementType > elements)
 Assigns elements from the initializer list to this instance.
 
constexpr void copyFrom (const ElementType *otherData, size_t otherSize)
 Copies the content from otherData to this instance.
 
constexpr void fill (const value_type &value)
 Fills the container with the given value.
 
constexpr void fillLinspace (ElementType start, ElementType stop, bool includeEnd=true)
 Fills the vector with evenly spaced numbers between start and stop.
 
template<is::functionWithSignatureOrImplicitlyConvertible< void(value_type &)> Fn>
constexpr void forEach (Fn &&fn)
 Calls a function on each element.
 
template<is::functionWithSignatureOrImplicitlyConvertible< void(const value_type &)> Fn>
constexpr void forEach (Fn &&fn) const
 Calls a function on each element.
 
template<is::functionWithSignatureOrImplicitlyConvertible< value_type(const value_type &)> Fn>
constexpr void forEach (Fn &&fn)
 Calls a function on each element.
 
template<is::functionWithSignatureOrImplicitlyConvertible< void(value_type &, size_t)> Fn>
constexpr void forEach (Fn &&fn)
 Calls a function on each element and passes the element index as second function argument.
 
template<is::functionWithSignatureOrImplicitlyConvertible< void(const value_type &, size_t)> Fn>
constexpr void forEach (Fn &&fn) const
 Calls a function on each element and passes the element index as second function argument.
 
template<is::functionWithSignatureOrImplicitlyConvertible< value_type(const value_type &, size_t)> Fn>
constexpr void forEach (Fn &&fn)
 Calls a function on each element and passes the element index as second function argument.
 
template<class... Args, is::functionWithSignatureOrImplicitlyConvertible< void(value_type &, Args &&...)> Fn>
constexpr void forEach (Fn &&fn, Args &&... fnArgs)
 Calls a function on each element and forwards fnArgs to the function after the value.
 
template<class... Args, is::functionWithSignatureOrImplicitlyConvertible< void(const value_type &, Args &&...)> Fn>
constexpr void forEach (Fn &&fn, Args &&... fnArgs) const
 Calls a function on each element and forwards fnArgs to the function after the value.
 
template<class... Args, is::functionWithSignatureOrImplicitlyConvertible< value_type(const value_type &, Args &&...)> Fn>
constexpr void forEach (Fn &&fn, Args &&... fnArgs)
 Calls a function on each element and forwards fnArgs to the function after the value.
 
template<std::equality_comparable_with< ElementType > T>
constexpr auto find (const T &valueToLookFor)
 Returns an iterator to the first element that equals valueToLookFor or end() if none was found.
 
template<std::equality_comparable_with< ElementType > T>
constexpr auto find (const T &valueToLookFor) const
 Returns a const iterator to the first element that equals valueToLookFor or end() if none was found.
 
template<std::equality_comparable_with< ElementType > T>
constexpr auto findReverse (const T &valueToLookFor)
 Returns a reverse iterator to the last element in this vector that equals valueToLookFor or rend() if none was found.
 
template<std::equality_comparable_with< ElementType > T>
constexpr auto findReverse (const T &valueToLookFor) const
 Returns a const reverse iterator to the last element in this vector that equals valueToLookFor or rend() if none was found.
 
template<is::functionWithSignatureOrImplicitlyConvertible< bool(const ElementType &)> Fn>
constexpr auto findIf (Fn &&predicate)
 Returns an iterator to the first element in this vector for which predicate returns true or end() if none was found.
 
template<is::functionWithSignatureOrImplicitlyConvertible< bool(const ElementType &)> Fn>
constexpr auto findIf (Fn &&predicate) const
 Returns a const iterator to the first element in this vector for which predicate returns true or end() if none was found.
 
template<is::functionWithSignatureOrImplicitlyConvertible< bool(const ElementType &)> Fn>
constexpr auto findIfReverse (Fn &&predicate)
 Returns a reverse iterator to the last element in this vector for which predicate returns true or rend() if none was found.
 
template<is::functionWithSignatureOrImplicitlyConvertible< bool(const ElementType &)> Fn>
constexpr auto findIfReverse (Fn &&predicate) const
 Returns a const reverse iterator to the last element in this vector for which predicate returns true or rend() if none was found.
 
constexpr size_t count (const ElementType &valueToLookFor) const
 Returns the number of elements that are equal to valueToLookFor.
 
template<is::functionWithSignatureOrImplicitlyConvertible< bool(const ElementType &)> Fn>
constexpr size_t countIf (Fn &&predicate) const
 Returns the number of elements that satisfy predicate.
 
template<is::functionWithSignatureOrImplicitlyConvertible< bool(const ElementType &)> Fn>
constexpr bool all (Fn &&predicate) const
 Returns true if all elements satisfy the predicate or if the container is empty.
 
template<is::functionWithSignatureOrImplicitlyConvertible< bool(const ElementType &)> Fn>
constexpr bool any (Fn &&predicate) const
 Returns true if one or more elements satisfy the predicate.
 
template<std::equality_comparable_with< ElementType > T>
constexpr bool allElementsEqual (const T &value) const
 Returns true if all elements are equal to value or if the container is empty.
 
constexpr bool allElementsEqual () const
 Returns true if all elements are equal to themselves.
 
template<std::equality_comparable_with< ElementType > T>
constexpr bool contains (const T &value) const
 Returns true if at least one element is equal to value.
 
template<is::contiguousIteratorWithValueTypeSameAs< ElementType > It>
constexpr bool contains (It it) const
 Returns true if the iterator refers to an element inside this container or span.
 
template<std::equality_comparable_with< ElementType > T>
constexpr std::optional< size_t > indexOf (const T &value) const
 Returns the index of the first element that compares true to value or std::nullopt if none is found.
 
template<std::equality_comparable_with< ElementType > T>
constexpr std::optional< size_t > indexOfReverse (const T &value) const
 Returns the index of the last element that compares true to value or std::nullopt if none is found.
 
template<is::functionWithSignatureOrImplicitlyConvertible< bool(const ElementType &)> Fn>
constexpr std::optional< size_t > indexIf (Fn &&predicate) const
 Returns the index of the first element that satisfies the predicate or std::nullopt if none is found.
 
template<is::functionWithSignatureOrImplicitlyConvertible< bool(const ElementType &)> Fn>
constexpr std::optional< size_t > indexIfReverse (Fn &&predicate) const
 Returns the index of the last element that satisfies the predicate or std::nullopt if none is found.
 
constexpr std::optional< value_type > firstValueGreaterThanOrEqualTo (const value_type &valueToLookFor) const
 Returns a std::optional holding a copy of the first element value which is greater or equal to valueToLookFor or std::nullopt if no such value is found.
 
constexpr std::optional< value_type > firstValueGreaterThan (const value_type &valueToLookFor) const
 Returns a std::optional holding a copy of the first element value which is greater than valueToLookFor or std::nullopt if no such value is found.
 
constexpr void reverse ()
 Reverses the order of all elements.
 
constexpr void rotate (size_t newFirstElementIdx)
 Rotates the elements so that the element with the index newFirstElementIdx becomes the first element and the element with the index newFirstElementIdx - 1 becomes the last element.
 
void shiftLeft (size_t n, bool clearFreeSpaceAfterShiftedRegion)
 Shifts all elements to the left by n.
 
void shiftRight (size_t n, bool clearFreeSpaceBeforeShiftedRegion)
 Shifts all elements to the right by n.
 
constexpr void sort ()
 Sorts all elements in an ascending order using operator <=>.
 
template<is::functionWithSignatureOrImplicitlyConvertible< bool(const value_type &, const value_type &)> ComparatorFn>
constexpr void sort (ComparatorFn &&compare)
 Sorts all elements in this vector according to the compare function.
 
constexpr bool elementsAreSorted () const
 Returns true if all elements are sorted.
 
NeonRegister< std::remove_const_t< ElementType > > getNeon (size_t i) const &&is
 Evaluates a certain expression in place on this vector, e.g.
 
constexpr bool isNotAliased (const void *) const
 
VCTR_FORCEDINLINE const ElementType * evalNextVectorOpInExpressionChain (void *) const
 
constexpr const StorageInfoTypegetStorageInfo () const
 
template<is::anyVctrOrExpression V>
constexpr void operator*= (const V &v)
 Multiplies this by a vector or expression in place.
 
constexpr void operator*= (value_type c)
 Multiplies this by a constant in place.
 
template<is::anyVctrOrExpression V>
constexpr void operator/= (const V &v)
 Divides this by a vector or expression in place.
 
constexpr void operator/= (value_type c)
 Divides this by a constant in place.
 
template<is::anyVctrOrExpression V>
constexpr void operator+= (const V &v)
 Adds a vector or expression to this in place.
 
constexpr void operator+= (value_type c)
 Adds a constant to this in place.
 
template<is::anyVctrOrExpression V>
constexpr void operator-= (const V &v)
 Subtracts a vector or expression from this in place.
 
constexpr void operator-= (value_type c)
 Subtracts a constant from this in place.
 
constexpr ElementType min () const
 Returns the minimal value of all elements.
 
constexpr ElementType minAbs () const
 Returns the minimal absolute value of all elements.
 
constexpr ElementType max () const
 Returns the maximum value of all elements.
 
constexpr ElementType maxAbs () const
 Returns the maximum absolute value of all elements.
 
constexpr ElementType mean () const
 Returns the mean value across all elements.
 
constexpr ElementType meanSquare () const
 Returns the mean value across all squared elements.
 
constexpr ElementType rms () const
 Returns the square root of the mean value across all squared elements.
 
constexpr ElementType sum () const
 Returns the sum of all elements.
 
constexpr bool allElementsAreFinite ()
 Returns true if all elements are finite.
 
constexpr bool allElementsAreFinite ()
 Returns true if all elements are finite.
 
constexpr bool anyElementIsNaN ()
 Returns true if any element is NaN.
 
constexpr bool anyElementIsNaN ()
 Returns true if any real or imaginary part of an element is NaN.
 

Static Public Member Functions

static consteval size_t getExtent (size_t amountToShrink=0)
 Returns the extent of this instance, optionally shrank by a certain amount.
 
static constexpr size_t size () noexcept
 Returns the number of elements.
 
static constexpr size_t sizeInBytes () noexcept
 Returns the container size in bytes.
 
static constexpr size_t backIdx () noexcept
 Returns the index referring to the last element in the vector.
 

Detailed Description

template<class ElementType, class StorageType, size_t extent, class StorageInfoType = StorageInfo<StorageType>>
class vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >

The base class to all one dimensional containers and views in the VCTR project.

Member Function Documentation

◆ all()

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
template<is::functionWithSignatureOrImplicitlyConvertible< bool(const ElementType &)> Fn>
constexpr bool vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::all ( Fn &&  predicate) const
inlineconstexpr

Returns true if all elements satisfy the predicate or if the container is empty.

◆ allElementsAreFinite() [1/2]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
constexpr bool vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::allElementsAreFinite ( )
constexpr

Returns true if all elements are finite.

◆ allElementsAreFinite() [2/2]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
constexpr bool vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::allElementsAreFinite ( )
constexpr

Returns true if all elements are finite.

◆ allElementsEqual() [1/2]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
constexpr bool vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::allElementsEqual ( ) const
inlineconstexpr

Returns true if all elements are equal to themselves.

◆ allElementsEqual() [2/2]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
template<std::equality_comparable_with< ElementType > T>
constexpr bool vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::allElementsEqual ( const T &  value) const
inlineconstexpr

Returns true if all elements are equal to value or if the container is empty.

◆ any()

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
template<is::functionWithSignatureOrImplicitlyConvertible< bool(const ElementType &)> Fn>
constexpr bool vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::any ( Fn &&  predicate) const
inlineconstexpr

Returns true if one or more elements satisfy the predicate.

◆ anyElementIsNaN() [1/2]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
constexpr bool vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::anyElementIsNaN ( )
constexpr

Returns true if any element is NaN.

◆ anyElementIsNaN() [2/2]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
constexpr bool vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::anyElementIsNaN ( )
constexpr

Returns true if any real or imaginary part of an element is NaN.

◆ assign()

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
constexpr void vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::assign ( std::initializer_list< ElementType >  elements)
inlineconstexpr

Assigns elements from the initializer list to this instance.

In case it is a resizable Vector, it will be resized to match the size of the list, otherwise the list size must match the destination size.

◆ at() [1/2]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
constexpr auto & vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::at ( size_t  i)
inlineconstexpr

Returns a reference to element i.

Throws std::out_of_range if i >= size()

◆ at() [2/2]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
constexpr auto & vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::at ( size_t  i) const
inlineconstexpr

Returns a reference to element i.

Throws std::out_of_range if i >= size()

◆ back() [1/2]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
constexpr auto && vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::back ( )
inlineconstexpr

Returns a reference to the last element.

◆ back() [2/2]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
constexpr auto && vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::back ( ) const
inlineconstexpr

Returns a reference to the last element.

◆ backIdx() [1/2]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
constexpr size_t vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::backIdx ( ) const
inlineconstexprnoexcept

Returns the index referring to the last element in the vector.

This overload is a non-static function, used in case the extent is dynamic.

◆ backIdx() [2/2]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
static constexpr size_t vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::backIdx ( )
inlinestaticconstexprnoexcept

Returns the index referring to the last element in the vector.

This overload is a static function, used in case the extent is static.

◆ begin() [1/2]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
constexpr auto vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::begin ( )
inlineconstexpr

Returns an iterator to the begin of the storage.

◆ begin() [2/2]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
constexpr auto vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::begin ( ) const
inlineconstexpr

Returns a const iterator to the begin of the storage.

◆ contains() [1/2]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
template<std::equality_comparable_with< ElementType > T>
constexpr bool vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::contains ( const T &  value) const
inlineconstexpr

Returns true if at least one element is equal to value.

◆ contains() [2/2]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
template<is::contiguousIteratorWithValueTypeSameAs< ElementType > It>
constexpr bool vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::contains ( It  it) const
inlineconstexpr

Returns true if the iterator refers to an element inside this container or span.

It will return false in case it equals end().

◆ copyFrom()

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
constexpr void vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::copyFrom ( const ElementType *  otherData,
size_t  otherSize 
)
inlineconstexpr

Copies the content from otherData to this instance.

In case the storage of this instance is resizable, it will resize it if necessary. Otherwise, it will simply assert that the size matches.

◆ count()

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
constexpr size_t vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::count ( const ElementType &  valueToLookFor) const
inlineconstexpr

Returns the number of elements that are equal to valueToLookFor.

◆ countIf()

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
template<is::functionWithSignatureOrImplicitlyConvertible< bool(const ElementType &)> Fn>
constexpr size_t vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::countIf ( Fn &&  predicate) const
inlineconstexpr

Returns the number of elements that satisfy predicate.

◆ data() [1/2]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
VCTR_FORCEDINLINE constexpr auto * vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::data ( )
inlineconstexpr

Returns a raw pointer to the underlying storage.

◆ data() [2/2]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
VCTR_FORCEDINLINE constexpr auto * vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::data ( ) const
inlineconstexpr

Returns a raw pointer to the underlying storage.

◆ elementsAreSorted()

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
constexpr bool vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::elementsAreSorted ( ) const
inlineconstexpr

Returns true if all elements are sorted.

◆ empty()

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
constexpr bool vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::empty ( ) const
inlineconstexprnoexcept

Checks whether the container is empty.

◆ end() [1/2]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
constexpr auto vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::end ( )
inlineconstexpr

Returns an iterator to the first element behind the storage.

◆ end() [2/2]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
constexpr auto vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::end ( ) const
inlineconstexpr

Returns a const iterator to the first element behind the storage.

◆ fill()

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
constexpr void vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::fill ( const value_type &  value)
inlineconstexpr

Fills the container with the given value.

◆ fillLinspace()

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
constexpr void vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::fillLinspace ( ElementType  start,
ElementType  stop,
bool  includeEnd = true 
)
inlineconstexpr

Fills the vector with evenly spaced numbers between start and stop.

Properties:

  • The length of the vector will not be changed and must be > 0.
  • If start and stop are identical, the container will be filled with that value.
  • Ranges can have a negative increment, i.e., start > stop is explicitly allowed.
Parameters
startFirst value of the interval; always included.
stopLast value of the interval; only included if includeEnd is true.
includeEndIf this is true, both start and stop are included; otherwise only start is included.

◆ find() [1/2]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
template<std::equality_comparable_with< ElementType > T>
constexpr auto vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::find ( const T &  valueToLookFor)
inlineconstexpr

Returns an iterator to the first element that equals valueToLookFor or end() if none was found.

◆ find() [2/2]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
template<std::equality_comparable_with< ElementType > T>
constexpr auto vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::find ( const T &  valueToLookFor) const
inlineconstexpr

Returns a const iterator to the first element that equals valueToLookFor or end() if none was found.

◆ findIf() [1/2]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
template<is::functionWithSignatureOrImplicitlyConvertible< bool(const ElementType &)> Fn>
constexpr auto vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::findIf ( Fn &&  predicate)
inlineconstexpr

Returns an iterator to the first element in this vector for which predicate returns true or end() if none was found.

◆ findIf() [2/2]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
template<is::functionWithSignatureOrImplicitlyConvertible< bool(const ElementType &)> Fn>
constexpr auto vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::findIf ( Fn &&  predicate) const
inlineconstexpr

Returns a const iterator to the first element in this vector for which predicate returns true or end() if none was found.

◆ findIfReverse() [1/2]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
template<is::functionWithSignatureOrImplicitlyConvertible< bool(const ElementType &)> Fn>
constexpr auto vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::findIfReverse ( Fn &&  predicate)
inlineconstexpr

Returns a reverse iterator to the last element in this vector for which predicate returns true or rend() if none was found.

◆ findIfReverse() [2/2]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
template<is::functionWithSignatureOrImplicitlyConvertible< bool(const ElementType &)> Fn>
constexpr auto vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::findIfReverse ( Fn &&  predicate) const
inlineconstexpr

Returns a const reverse iterator to the last element in this vector for which predicate returns true or rend() if none was found.

◆ findReverse() [1/2]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
template<std::equality_comparable_with< ElementType > T>
constexpr auto vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::findReverse ( const T &  valueToLookFor)
inlineconstexpr

Returns a reverse iterator to the last element in this vector that equals valueToLookFor or rend() if none was found.

◆ findReverse() [2/2]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
template<std::equality_comparable_with< ElementType > T>
constexpr auto vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::findReverse ( const T &  valueToLookFor) const
inlineconstexpr

Returns a const reverse iterator to the last element in this vector that equals valueToLookFor or rend() if none was found.

◆ firstValueGreaterThan()

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
constexpr std::optional< value_type > vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::firstValueGreaterThan ( const value_type &  valueToLookFor) const
inlineconstexpr

Returns a std::optional holding a copy of the first element value which is greater than valueToLookFor or std::nullopt if no such value is found.

This function requires that the elements are sorted.

◆ firstValueGreaterThanOrEqualTo()

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
constexpr std::optional< value_type > vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::firstValueGreaterThanOrEqualTo ( const value_type &  valueToLookFor) const
inlineconstexpr

Returns a std::optional holding a copy of the first element value which is greater or equal to valueToLookFor or std::nullopt if no such value is found.

This function requires that the elements are sorted.

◆ forEach() [1/9]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
template<is::functionWithSignatureOrImplicitlyConvertible< void(value_type &)> Fn>
constexpr void vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::forEach ( Fn &&  fn)
inlineconstexpr

Calls a function on each element.

The function returns void and might take the elements by reference to mutate them.

◆ forEach() [2/9]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
template<is::functionWithSignatureOrImplicitlyConvertible< value_type(const value_type &)> Fn>
constexpr void vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::forEach ( Fn &&  fn)
inlineconstexpr

Calls a function on each element.

The function returns a value_type which is assigned as new value to the element.

◆ forEach() [3/9]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
template<is::functionWithSignatureOrImplicitlyConvertible< void(value_type &, size_t)> Fn>
constexpr void vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::forEach ( Fn &&  fn)
inlineconstexpr

Calls a function on each element and passes the element index as second function argument.

The function returns void and might take the elements by reference to mutate them.

◆ forEach() [4/9]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
template<is::functionWithSignatureOrImplicitlyConvertible< value_type(const value_type &, size_t)> Fn>
constexpr void vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::forEach ( Fn &&  fn)
inlineconstexpr

Calls a function on each element and passes the element index as second function argument.

The function returns a value_type which is assigned as new value to the element.

◆ forEach() [5/9]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
template<is::functionWithSignatureOrImplicitlyConvertible< void(const value_type &)> Fn>
constexpr void vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::forEach ( Fn &&  fn) const
inlineconstexpr

Calls a function on each element.

The function returns void and must not mutate the elements.

◆ forEach() [6/9]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
template<is::functionWithSignatureOrImplicitlyConvertible< void(const value_type &, size_t)> Fn>
constexpr void vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::forEach ( Fn &&  fn) const
inlineconstexpr

Calls a function on each element and passes the element index as second function argument.

The function returns void and must not mutate the elements.

◆ forEach() [7/9]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
template<class... Args, is::functionWithSignatureOrImplicitlyConvertible< void(value_type &, Args &&...)> Fn>
constexpr void vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::forEach ( Fn &&  fn,
Args &&...  fnArgs 
)
inlineconstexpr

Calls a function on each element and forwards fnArgs to the function after the value.

The function returns void and might take the elements by reference to mutate them.

◆ forEach() [8/9]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
template<class... Args, is::functionWithSignatureOrImplicitlyConvertible< value_type(const value_type &, Args &&...)> Fn>
constexpr void vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::forEach ( Fn &&  fn,
Args &&...  fnArgs 
)
inlineconstexpr

Calls a function on each element and forwards fnArgs to the function after the value.

The function returns a value_type which is assigned as new value to the element.

◆ forEach() [9/9]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
template<class... Args, is::functionWithSignatureOrImplicitlyConvertible< void(const value_type &, Args &&...)> Fn>
constexpr void vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::forEach ( Fn &&  fn,
Args &&...  fnArgs 
) const
inlineconstexpr

Calls a function on each element and forwards fnArgs to the function after the value.

The function returns void and must not mutate the elements.

◆ front() [1/2]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
constexpr auto && vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::front ( )
inlineconstexpr

Returns a reference to the first element.

◆ front() [2/2]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
constexpr auto && vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::front ( ) const
inlineconstexpr

Returns a reference to the first element.

◆ getExtent()

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
static consteval size_t vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::getExtent ( size_t  amountToShrink = 0)
inlinestatic

Returns the extent of this instance, optionally shrank by a certain amount.

In case the instance specifies a dynamic extent, the return value will always be std::dynamic_extent, no matter if we specified an amount to shrink. In case the instance specifies a static extent, the return value will be extent - amountToShrink.

◆ getNeon()

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
NeonRegister< std::remove_const_t< ElementType > > vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::getNeon ( size_t  i) const &&
inline

Evaluates a certain expression in place on this vector, e.g.

it assigns the expression result back to the vector.

◆ indexIf()

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
template<is::functionWithSignatureOrImplicitlyConvertible< bool(const ElementType &)> Fn>
constexpr std::optional< size_t > vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::indexIf ( Fn &&  predicate) const
inlineconstexpr

Returns the index of the first element that satisfies the predicate or std::nullopt if none is found.

◆ indexIfReverse()

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
template<is::functionWithSignatureOrImplicitlyConvertible< bool(const ElementType &)> Fn>
constexpr std::optional< size_t > vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::indexIfReverse ( Fn &&  predicate) const
inlineconstexpr

Returns the index of the last element that satisfies the predicate or std::nullopt if none is found.

◆ indexOf()

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
template<std::equality_comparable_with< ElementType > T>
constexpr std::optional< size_t > vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::indexOf ( const T &  value) const
inlineconstexpr

Returns the index of the first element that compares true to value or std::nullopt if none is found.

◆ indexOfReverse()

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
template<std::equality_comparable_with< ElementType > T>
constexpr std::optional< size_t > vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::indexOfReverse ( const T &  value) const
inlineconstexpr

Returns the index of the last element that compares true to value or std::nullopt if none is found.

◆ max()

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
constexpr ElementType vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::max ( ) const
constexpr

Returns the maximum value of all elements.

◆ maxAbs()

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
constexpr ElementType vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::maxAbs ( ) const
constexpr

Returns the maximum absolute value of all elements.

◆ mean()

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
constexpr ElementType vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::mean ( ) const
constexpr

Returns the mean value across all elements.

◆ meanSquare()

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
constexpr ElementType vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::meanSquare ( ) const
constexpr

Returns the mean value across all squared elements.

◆ min()

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
constexpr ElementType vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::min ( ) const
constexpr

Returns the minimal value of all elements.

◆ minAbs()

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
constexpr ElementType vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::minAbs ( ) const
constexpr

Returns the minimal absolute value of all elements.

◆ operator*=() [1/2]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
template<is::anyVctrOrExpression V>
constexpr void vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::operator*= ( const V &  v)
constexpr

Multiplies this by a vector or expression in place.

◆ operator*=() [2/2]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
constexpr void vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::operator*= ( value_type  c)
constexpr

Multiplies this by a constant in place.

◆ operator+=() [1/2]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
template<is::anyVctrOrExpression V>
constexpr void vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::operator+= ( const V &  v)
constexpr

Adds a vector or expression to this in place.

In the special case where a multiplication expression is assigned for which none of the operands are expressions themselves, this will try to use accelerated multiply accumulate operations to evaluate the expression.

Example:

// This code tries to use an accelerated multiply accumulate operation as it can access the values of a and b right away
c += a * b;
c += a * 42.0f;
// Cannot directly evaluate the accelerated operation as vctr::square (b) would have to be evaluated and stored to
// some temporary memory location first.
c += a * vctr::square (b);
The stack-based container type.
Definition: Array.h:53
constexpr ExpressionChainBuilder< expressions::Square > square
Squares the source values.
Definition: Square.h:93

◆ operator+=() [2/2]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
constexpr void vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::operator+= ( value_type  c)
constexpr

Adds a constant to this in place.

◆ operator-=() [1/2]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
template<is::anyVctrOrExpression V>
constexpr void vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::operator-= ( const V &  v)
constexpr

Subtracts a vector or expression from this in place.

◆ operator-=() [2/2]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
constexpr void vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::operator-= ( value_type  c)
constexpr

Subtracts a constant from this in place.

◆ operator/=() [1/2]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
template<is::anyVctrOrExpression V>
constexpr void vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::operator/= ( const V &  v)
constexpr

Divides this by a vector or expression in place.

◆ operator/=() [2/2]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
constexpr void vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::operator/= ( value_type  c)
constexpr

Divides this by a constant in place.

◆ operator[]() [1/2]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
constexpr auto & vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::operator[] ( size_t  i)
inlineconstexpr

Returns a reference to element i.

Asserts in debug builds if i >= size()

◆ operator[]() [2/2]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
constexpr auto & vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::operator[] ( size_t  i) const
inlineconstexpr

Returns a reference to element i.

Asserts in debug builds if i >= size()

◆ rbegin() [1/2]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
constexpr auto vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::rbegin ( )
inlineconstexpr

Returns a reverse iterator to the last element in the storage.

◆ rbegin() [2/2]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
constexpr auto vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::rbegin ( ) const
inlineconstexpr

Returns a const reverse iterator to the last element in the storage.

◆ rend() [1/2]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
constexpr auto vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::rend ( )
inlineconstexpr

Returns a reverse iterator to the element before the first element in the storage.

◆ rend() [2/2]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
constexpr auto vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::rend ( ) const
inlineconstexpr

Returns a const reverse iterator to the element before the first element in the storage.

◆ reverse()

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
constexpr void vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::reverse ( )
inlineconstexpr

Reverses the order of all elements.

◆ rms()

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
constexpr ElementType vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::rms ( ) const
constexpr

Returns the square root of the mean value across all squared elements.

◆ rotate()

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
constexpr void vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::rotate ( size_t  newFirstElementIdx)
inlineconstexpr

Rotates the elements so that the element with the index newFirstElementIdx becomes the first element and the element with the index newFirstElementIdx - 1 becomes the last element.

◆ shiftLeft()

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
void vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::shiftLeft ( size_t  n,
bool  clearFreeSpaceAfterShiftedRegion 
)
inline

Shifts all elements to the left by n.

In other words: It shifts the elements so that the element with the index n becomes the first element. If clearFreeSpaceAfterShiftedRegion is true, it clears all elements behind the shifted region by setting the memory to 0, otherwise it leaves that region as it was. For maximum efficiency, this works on a raw memory basis, so the elements have to be trivially copyable.

◆ shiftRight()

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
void vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::shiftRight ( size_t  n,
bool  clearFreeSpaceBeforeShiftedRegion 
)
inline

Shifts all elements to the right by n.

In other words: It shifts the elements so that the previous first element now is the element with the index n. If clearFreeSpaceBeforeShiftedRegion is true, it clears all elements before the shifted region by setting the memory to 0, otherwise it leaves that region as it was. For maximum efficiency, this works on a raw memory basis, so the elements have to be trivially copyable.

◆ size() [1/2]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
constexpr size_t vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::size ( ) const
inlineconstexprnoexcept

Returns the number of elements.

This overload is a non-static function, used in case the extent is dynamic.

◆ size() [2/2]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
static constexpr size_t vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::size ( )
inlinestaticconstexprnoexcept

Returns the number of elements.

This overload is a static function, used in case the extent is static.

◆ sizeInBytes() [1/2]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
constexpr size_t vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::sizeInBytes ( ) const
inlineconstexprnoexcept

Returns the container size in bytes.

This overload is a non-static function, used in case the extent is dynamic.

◆ sizeInBytes() [2/2]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
static constexpr size_t vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::sizeInBytes ( )
inlinestaticconstexprnoexcept

Returns the container size in bytes.

This overload is a static function, used in case the extent is static.

◆ sort() [1/2]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
constexpr void vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::sort ( )
inlineconstexpr

Sorts all elements in an ascending order using operator <=>.

◆ sort() [2/2]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
template<is::functionWithSignatureOrImplicitlyConvertible< bool(const value_type &, const value_type &)> ComparatorFn>
constexpr void vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::sort ( ComparatorFn &&  compare)
inlineconstexpr

Sorts all elements in this vector according to the compare function.

The compare function should receive true if the first argument is less than the second argument.

◆ subSpan() [1/8]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
template<size_t startIdx>
constexpr auto vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::subSpan ( )
inlineconstexpr

Returns a Span that views a portion of this instance, starting at startIdx with a length of size() - startIdx.

This overload with a compile time static index will return a Span with a static extent in case this instance also has a static extent.

◆ subSpan() [2/8]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
template<size_t startIdx, size_t numElements>
constexpr auto vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::subSpan ( )
inlineconstexpr

Returns a Span that views a portion of this instance, starting at startIdx with a length of numElements.

This overload with a compile time static length will always return a Span with a static extent.

◆ subSpan() [3/8]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
template<size_t startIdx>
constexpr auto vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::subSpan ( ) const
inlineconstexpr

Returns a Span that views a portion of this instance, starting at startIdx with a length of size() - startIdx.

This overload with a compile time static index will return a Span with a static extent in case this instance also has a static extent.

◆ subSpan() [4/8]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
template<size_t startIdx, size_t numElements>
constexpr auto vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::subSpan ( ) const
inlineconstexpr

Returns a Span that views a portion of this instance, starting at startIdx with a length of numElements.

This overload with a compile time static length will always return a Span with a static extent.

◆ subSpan() [5/8]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
constexpr auto vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::subSpan ( size_t  startIdx)
inlineconstexpr

Returns a Span that views a portion of this instance, starting at startIdx with a length of size() - startIdx.

This overload with a runtime defined index will always return a Span with a dynamic extent.

◆ subSpan() [6/8]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
constexpr auto vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::subSpan ( size_t  startIdx) const
inlineconstexpr

Returns a Span that views a portion of this instance, starting at startIdx with a length of size() - startIdx.

This overload with a runtime defined index will always return a Span with a dynamic extent.

◆ subSpan() [7/8]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
constexpr auto vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::subSpan ( size_t  startIdx,
size_t  numElements 
)
inlineconstexpr

Returns a Span that views a portion of this instance, starting at startIdx with a length of numElements.

This overload with a runtime defined length will always return a Span with a dynamic extent.

◆ subSpan() [8/8]

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
constexpr auto vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::subSpan ( size_t  startIdx,
size_t  numElements 
) const
inlineconstexpr

Returns a Span that views a portion of this instance, starting at startIdx with a length of numElements.

This overload with a runtime defined length will always return a Span with a dynamic extent.

◆ sum()

template<class ElementType , class StorageType , size_t extent, class StorageInfoType = StorageInfo<StorageType>>
constexpr ElementType vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType >::sum ( ) const
constexpr

Returns the sum of all elements.


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