|
| template<class T, size_t N, class G> |
| Array< T, N > | generateArray (G generator) |
| | Generate an array using the given generator.
|
| template<size_t N, class G> |
| auto | generateArray (G generator) -> Array< decltype(generator()), N > |
| | Generate an array using the given generator.
|
| template<class T, size_t N, class U> |
| Array< T, N > | copyAs (const Array< U, N > &src) |
| | Copy an Array to an Array of a different type.
|
| template<class F, class U, size_t N> |
| Array< decltype(F{}(U{})), N > | apply (const Array< U, N > &src, F f) |
| | Apply a function to all elements of the array and return a copy.
|
| template<class T, size_t N, class... Args> |
| Array< T, N > | fillArray (Args... args) |
| | Fill the array with the same value for each element.
|
| template<class T, size_t N, class U, class V = U> |
| Array< T, N > | generateIncrementalArray (U start=0, V increment=V(1)) |
| | Generate an array where the first value is given, and the subsequent values are calculated as the previous value incremented with a given value:
\( x[0] = \mathrm{start} \)
\( x[k+1] = x[k] + \mathrm{increment} \) .
|
| template<class T, size_t M, size_t N> |
| Array< T, M+N > | cat (const Array< T, M > &a, const Array< T, N > &b) |
| | Concatenate two arrays.
|
| template<class T1, class T2, size_t N1, size_t N2, bool Reverse1, bool Reverse2, bool Const1, bool Const2> |
| Array< decltype(T1() *T2()), N1+N2 - 1 > | distribute (const ArraySlice< T1, N1, Reverse1, Const1 > &a, const ArraySlice< T2, N2, Reverse2, Const2 > &b) |
| template<class T1, class T2, size_t N1, size_t N2, bool Reverse1, bool Const1> |
| Array< decltype(T1() *T2()), N1+N2 - 1 > | distribute (const ArraySlice< T1, N1, Reverse1, Const1 > &a, const Array< T2, N2 > &b) |
| template<class T1, class T2, size_t N1, size_t N2, bool Reverse2, bool Const2> |
| Array< decltype(T1() *T2()), N1+N2 - 1 > | distribute (const Array< T1, N1 > &a, const ArraySlice< T2, N2, Reverse2, Const2 > &b) |
| template<class T1, class T2, size_t N1, size_t N2> |
| Array< decltype(T1() *T2()), N1+N2 - 1 > | distribute (const Array< T1, N1 > &a, const Array< T2, N2 > &b) |
| template<size_t Start = 0, size_t End = N - 1> |
| ArraySlice< T, abs_diff(Start, End)+1,(End< Start), false > | slice () |
| | Get a view on a slice of the Array.
|
| template<size_t Start = 0, size_t End = N - 1> |
| ArraySlice< T, abs_diff(Start, End)+1,(End< Start), true > | slice () const |
| | Get a read-only view on a slice of the Array.
|
| template<size_t Start, size_t End> |
| ArraySlice< T, abs_diff(End, Start)+1, Reverse ^(End< Start), Const > | slice () const |
| template<class T, size_t N, bool Reverse, bool Const> |
| ArraySlice< T, N, Reverse, Const >::iterator | operator+ (typename ArraySlice< T, N, Reverse, Const >::iterator::difference_type n, typename ArraySlice< T, N, Reverse, Const >::iterator a) |
| | <T, N, Reverse, Const>::iterator
|
| template<class T1, class T2, size_t N1, size_t N2, bool Reverse1, bool Reverse2, bool Const1, bool Const2> |
| bool | operator== (ArraySlice< T1, N1, Reverse1, Const1 > a, ArraySlice< T2, N2, Reverse2, Const2 > b) |
| | Slice == Slice.
|
| template<class T1, class T2, size_t N1, size_t N2, bool Reverse2, bool Const2> |
| bool | operator== (const Array< T1, N1 > &a, ArraySlice< T2, N2, Reverse2, Const2 > b) |
| | Array == Slice.
|
| template<class T1, class T2, size_t N1, size_t N2, bool Reverse1, bool Const1> |
| bool | operator== (ArraySlice< T1, N1, Reverse1, Const1 > a, const Array< T2, N2 > &b) |
| | Slice == Array.
|
| template<class T1, class T2, size_t N1, size_t N2, bool Reverse1, bool Reverse2, bool Const1, bool Const2> |
| bool | operator!= (ArraySlice< T1, N1, Reverse1, Const1 > a, ArraySlice< T2, N2, Reverse2, Const2 > b) |
| | Slice != Slice.
|
| template<class T1, class T2, size_t N1, size_t N2, bool Reverse2, bool Const2> |
| bool | operator!= (const Array< T1, N1 > &a, ArraySlice< T2, N2, Reverse2, Const2 > b) |
| | Array != Slice.
|
| template<class T1, class T2, size_t N1, size_t N2, bool Reverse1, bool Const1> |
| bool | operator!= (ArraySlice< T1, N1, Reverse1, Const1 > a, const Array< T2, N2 > &b) |
| | Slice != Array.
|
| template<class T1, class T2, size_t N1, size_t N2, bool Reverse1, bool Reverse2, bool Const1, bool Const2> |
| Array< decltype(T1 {}+T2 {}), N1 > | operator+ (ArraySlice< T1, N1, Reverse1, Const1 > a, ArraySlice< T2, N2, Reverse2, Const2 > b) |
| | Slice + Slice.
|
| template<class T1, class T2, size_t N1, size_t N2> |
| Array< decltype(T1 {}+T2 {}), N1 > | operator+ (const Array< T1, N1 > &a, const Array< T2, N2 > &b) |
| | Array + Array.
|
| template<class T1, class T2, size_t N1, size_t N2, bool Reverse1, bool Reverse2, bool Const1, bool Const2> |
| const ArraySlice< T1, N1, Reverse1, Const1 > & | operator+= (const ArraySlice< T1, N1, Reverse1, Const1 > &a, const ArraySlice< T2, N2, Reverse2, Const2 > &b) |
| | Slice += Slice.
|
| template<class T1, class T2, size_t N1, size_t N2> |
| Array< T1, N1 > & | operator+= (Array< T1, N1 > &a, const Array< T2, N2 > &b) |
| | Array += Array.
|
| template<class T1, class T2, size_t N1, size_t N2, bool Reverse1, bool Reverse2, bool Const1, bool Const2> |
| Array< decltype(T1 {} - T2 {}), N1 > | operator- (ArraySlice< T1, N1, Reverse1, Const1 > a, ArraySlice< T2, N2, Reverse2, Const2 > b) |
| | Slice - Slice.
|
| template<class T1, class T2, size_t N1, size_t N2> |
| Array< decltype(T1 {} - T2 {}), N1 > | operator- (const Array< T1, N1 > &a, const Array< T2, N2 > &b) |
| | Array - Array.
|
| template<class T1, class T2, size_t N1, size_t N2, bool Reverse1, bool Reverse2, bool Const1, bool Const2> |
| const ArraySlice< T1, N1, Reverse1, Const1 > & | operator-= (const ArraySlice< T1, N1, Reverse1, Const1 > &a, const ArraySlice< T2, N2, Reverse2, Const2 > &b) |
| | Slice -= Slice.
|
| template<class T1, class T2, size_t N1, size_t N2> |
| Array< T1, N1 > & | operator-= (Array< T1, N1 > &a, const Array< T2, N2 > &b) |
| | Array -= Array.
|
| template<class T1, class T2, size_t N1, bool Reverse1, bool Const1> |
| Array< decltype(T1 {} *T2 {}), N1 > | operator* (ArraySlice< T1, N1, Reverse1, Const1 > a, T2 b) |
| | Slice * Scalar.
|
| template<class T1, class T2, size_t N1> |
| Array< decltype(T1 {} *T2 {}), N1 > | operator* (const Array< T1, N1 > &a, T2 b) |
| | Array * Scalar.
|
| template<class T1, class T2, size_t N2, bool Reverse2, bool Const2> |
| Array< decltype(T1 {} *T2 {}), N2 > | operator* (T1 a, ArraySlice< T2, N2, Reverse2, Const2 > b) |
| | Scalar * Slice.
|
| template<class T1, class T2, size_t N2> |
| Array< decltype(T1 {} *T2 {}), N2 > | operator* (T1 a, const Array< T2, N2 > &b) |
| | Scalar * Array.
|
| template<class T1, class T2, size_t N1, bool Reverse1, bool Const1> |
| const ArraySlice< T1, N1, Reverse1, Const1 > & | operator*= (const ArraySlice< T1, N1, Reverse1, Const1 > &a, T2 b) |
| | Slice *= Scalar.
|
| template<class T1, class T2, size_t N1> |
| Array< T1, N1 > & | operator*= (Array< T1, N1 > &a, T2 b) |
| | Array *= Scalar.
|
| template<class T1, class T2, size_t N1, bool Reverse1, bool Const1> |
| Array< decltype(T1 {}/T2 {}), N1 > | operator/ (ArraySlice< T1, N1, Reverse1, Const1 > a, T2 b) |
| | Slice / Scalar.
|
| template<class T1, class T2, size_t N1> |
| Array< decltype(T1 {}/T2 {}), N1 > | operator/ (const Array< T1, N1 > &a, T2 b) |
| | Array / Scalar.
|
| template<class T1, class T2, size_t N1, bool Reverse1, bool Const1> |
| const ArraySlice< T1, N1, Reverse1, Const1 > & | operator/= (const ArraySlice< T1, N1, Reverse1, Const1 > &a, T2 b) |
| | Slice /= Scalar.
|
| template<class T1, class T2, size_t N1> |
| Array< T1, N1 > & | operator/= (Array< T1, N1 > &a, T2 b) |
| | Array /= Scalar.
|
| template<class T, size_t N, bool Reverse, bool Const> |
| Array< decltype(-T {}), N > | operator- (ArraySlice< T, N, Reverse, Const > a) |
| | -Slice
|
| template<class T, size_t N> |
| Array< decltype(-T {}), N > | operator- (const Array< T, N > &a) |
| | -Array
|