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

The view type. More...

Inheritance diagram for vctr::Span< ElementType, extent, StorageInfoType >:
vctr::VctrBase< ElementType, StorageType, extent, StorageInfoType > vctr::Config vctr::StorageInfo< StorageType >

Public Types

using value_type = typename Vctr::value_type
 
using element_type = ElementType
 

Public Member Functions

constexpr Span (ElementType *ptr, size_t size)
 Creates a Span with a given size that views externally managed data, accessed by ptr.
 
template<bool isDataSIMDAligned, bool isStorageSIMDExtended>
constexpr Span (ElementType *ptr, size_t size, const StaticStorageInfo< isDataSIMDAligned, isStorageSIMDExtended, alignof(StdSpanType)> &info)
 Creates a Span with a given size that views externally managed data, accessed by ptr.
 
template<has::sizeAndDataWithElementType< ElementType > Container>
constexpr Span (Container &&containerToView)
 Creates a Span that acts as a view to the given container.
 
Spanoperator= (const Span &)=delete
 
template<has::sizeAndDataWithElementType< ElementType > Container>
constexpr Spanoperator= (Container &&containerToCopyDataFrom)
 Copies or moves the data of the source container to this Span.
 
constexpr Spanoperator= (std::initializer_list< ElementType > elementsToAssign)
 Assigns elements from the initializer list to this Span.
 
template<is::expression E>
constexpr void operator= (const E &expression)
 Assigns the result of an expression to this vector.
 
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, size_t extent = std::dynamic_extent, class StorageInfoType = StorageInfoWithMemberAlignment<alignof (std::span<ElementType, extent>), StorageInfo<std::span<ElementType, extent> > >>
class vctr::Span< ElementType, extent, StorageInfoType >

The view type.

Wraps a std::span and acts as a view to contiguous data owned and stored somewhere else. All containers that offer a size and data interface are implicitly convertible into a Span. Note that unlike Vector and Array, Spans have a const ElementType in case they view non-mutable data. This means, e.g. a const Vector<Foo> will be converted into a Span<const Foo>.

A Span should always act as a view to a valid memory location, therefore it has no default constructor. The assignment operators of a Span never reassign the viewed memory location but copy elements from the source to the memory viewed by the Span instance.

Constructor & Destructor Documentation

◆ Span() [1/3]

template<class ElementType , size_t extent = std::dynamic_extent, class StorageInfoType = StorageInfoWithMemberAlignment<alignof (std::span<ElementType, extent>), StorageInfo<std::span<ElementType, extent> > >>
constexpr vctr::Span< ElementType, extent, StorageInfoType >::Span ( ElementType *  ptr,
size_t  size 
)
inlineconstexpr

Creates a Span with a given size that views externally managed data, accessed by ptr.

◆ Span() [2/3]

template<class ElementType , size_t extent = std::dynamic_extent, class StorageInfoType = StorageInfoWithMemberAlignment<alignof (std::span<ElementType, extent>), StorageInfo<std::span<ElementType, extent> > >>
template<bool isDataSIMDAligned, bool isStorageSIMDExtended>
constexpr vctr::Span< ElementType, extent, StorageInfoType >::Span ( ElementType *  ptr,
size_t  size,
const StaticStorageInfo< isDataSIMDAligned, isStorageSIMDExtended, alignof(StdSpanType)> &  info 
)
inlineconstexpr

Creates a Span with a given size that views externally managed data, accessed by ptr.

The StaticStorageInfo instance describes extra SIMD alignment specifications of the viewed memory.

◆ Span() [3/3]

template<class ElementType , size_t extent = std::dynamic_extent, class StorageInfoType = StorageInfoWithMemberAlignment<alignof (std::span<ElementType, extent>), StorageInfo<std::span<ElementType, extent> > >>
template<has::sizeAndDataWithElementType< ElementType > Container>
constexpr vctr::Span< ElementType, extent, StorageInfoType >::Span ( Container &&  containerToView)
inlineconstexpr

Creates a Span that acts as a view to the given container.

The container can be any type that supplies a matching data() and view() member function.

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
inlineconstexprinherited

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 ( )
constexprinherited

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 ( )
constexprinherited

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
inlineconstexprinherited

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
inlineconstexprinherited

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
inlineconstexprinherited

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 ( )
constexprinherited

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 ( )
constexprinherited

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)
inlineconstexprinherited

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)
inlineconstexprinherited

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
inlineconstexprinherited

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 ( )
inlineconstexprinherited

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
inlineconstexprinherited

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
inlineconstexprnoexceptinherited

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 ( )
inlinestaticconstexprnoexceptinherited

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 ( )
inlineconstexprinherited

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
inlineconstexprinherited

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
inlineconstexprinherited

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
inlineconstexprinherited

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 
)
inlineconstexprinherited

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
inlineconstexprinherited

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
inlineconstexprinherited

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 ( )
inlineconstexprinherited

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
inlineconstexprinherited

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
inlineconstexprinherited

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
inlineconstexprnoexceptinherited

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 ( )
inlineconstexprinherited

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
inlineconstexprinherited

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)
inlineconstexprinherited

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 
)
inlineconstexprinherited

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)
inlineconstexprinherited

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
inlineconstexprinherited

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)
inlineconstexprinherited

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
inlineconstexprinherited

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)
inlineconstexprinherited

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
inlineconstexprinherited

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)
inlineconstexprinherited

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
inlineconstexprinherited

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
inlineconstexprinherited

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
inlineconstexprinherited

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)
inlineconstexprinherited

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)
inlineconstexprinherited

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)
inlineconstexprinherited

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)
inlineconstexprinherited

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
inlineconstexprinherited

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
inlineconstexprinherited

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 
)
inlineconstexprinherited

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 
)
inlineconstexprinherited

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
inlineconstexprinherited

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 ( )
inlineconstexprinherited

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
inlineconstexprinherited

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)
inlinestaticinherited

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 &&
inlineinherited

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
inlineconstexprinherited

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
inlineconstexprinherited

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
inlineconstexprinherited

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
inlineconstexprinherited

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
constexprinherited

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
constexprinherited

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
constexprinherited

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
constexprinherited

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
constexprinherited

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
constexprinherited

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)
constexprinherited

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)
constexprinherited

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)
constexprinherited

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)
constexprinherited

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)
constexprinherited

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)
constexprinherited

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)
constexprinherited

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)
constexprinherited

Divides this by a constant in place.

◆ operator=() [1/3]

template<class ElementType , size_t extent = std::dynamic_extent, class StorageInfoType = StorageInfoWithMemberAlignment<alignof (std::span<ElementType, extent>), StorageInfo<std::span<ElementType, extent> > >>
template<is::expression E>
constexpr void vctr::Span< ElementType, extent, StorageInfoType >::operator= ( const E &  expression)
inlineconstexpr

Assigns the result of an expression to this vector.

The Span has to match the size of the expression.

◆ operator=() [2/3]

template<class ElementType , size_t extent = std::dynamic_extent, class StorageInfoType = StorageInfoWithMemberAlignment<alignof (std::span<ElementType, extent>), StorageInfo<std::span<ElementType, extent> > >>
template<has::sizeAndDataWithElementType< ElementType > Container>
constexpr Span & vctr::Span< ElementType, extent, StorageInfoType >::operator= ( Container &&  containerToCopyDataFrom)
inlineconstexpr

Copies or moves the data of the source container to this Span.

You have to ensure that the source size matches.

◆ operator=() [3/3]

template<class ElementType , size_t extent = std::dynamic_extent, class StorageInfoType = StorageInfoWithMemberAlignment<alignof (std::span<ElementType, extent>), StorageInfo<std::span<ElementType, extent> > >>
constexpr Span & vctr::Span< ElementType, extent, StorageInfoType >::operator= ( std::initializer_list< ElementType >  elementsToAssign)
inlineconstexpr

Assigns elements from the initializer list to this Span.

You have to ensure that the source size matches.

◆ 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)
inlineconstexprinherited

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
inlineconstexprinherited

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 ( )
inlineconstexprinherited

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
inlineconstexprinherited

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 ( )
inlineconstexprinherited

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
inlineconstexprinherited

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 ( )
inlineconstexprinherited

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
constexprinherited

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)
inlineconstexprinherited

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 
)
inlineinherited

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 
)
inlineinherited

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
inlineconstexprnoexceptinherited

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 ( )
inlinestaticconstexprnoexceptinherited

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
inlineconstexprnoexceptinherited

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 ( )
inlinestaticconstexprnoexceptinherited

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 ( )
inlineconstexprinherited

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)
inlineconstexprinherited

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 ( )
inlineconstexprinherited

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 ( )
inlineconstexprinherited

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
inlineconstexprinherited

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
inlineconstexprinherited

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)
inlineconstexprinherited

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
inlineconstexprinherited

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 
)
inlineconstexprinherited

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
inlineconstexprinherited

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
constexprinherited

Returns the sum of all elements.


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