Arduino Helpers master
Utility library for Arduino
Public Types | Public Member Functions | Public Attributes | Static Public Attributes | Related Functions | List of all members
Array< T, N > Struct Template Reference

#include <AH/Containers/Array.hpp>

Detailed Description

template<class T, size_t N>
struct Array< T, N >

An array wrapper for easy copying, comparing, and iterating.

Template Parameters
TThe type of the elements in the array.
NThe number of elements in the array.
Examples
ArraySort.ino, and Numeric.ino.

Definition at line 32 of file Array.hpp.

+ Collaboration diagram for Array< T, N >:

Public Types

using type = T
 

Public Member Functions

T & operator[] (size_t index)
 Get the element at the given index. More...
 
const T & operator[] (size_t index) const
 Get the element at the given index. More...
 
T * begin ()
 Get a pointer to the first element. More...
 
const T * begin () const
 Get a pointer to the first element. More...
 
T * end ()
 Get a pointer to the memory beyond the array. More...
 
const T * end () const
 Get a pointer to the memory beyond the array. More...
 
bool operator== (const Array< T, N > &rhs) const
 Check the equality of all elements in two arrays. More...
 
bool operator!= (const Array< T, N > &rhs) const
 Check the inequality of all elements in two arrays. More...
 
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. More...
 
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. More...
 
template<size_t Start = 0, size_t End = N - 1>
ArraySlice< T, abs_diff(Start, End)+1,(End< Start), true > cslice () const
 Get a read-only view on a slice of the Array. More...
 
template<size_t Start, size_t End>
auto slice () -> ArraySlice< T, abs_diff(Start, End)+1,(End< Start), false >
 
template<size_t Start, size_t End>
auto slice () const -> ArraySlice< T, abs_diff(Start, End)+1,(End< Start), true >
 

Public Attributes

data [N]
 

Static Public Attributes

static constexpr size_t length = N
 

Related Functions

(Note that these are not member functions.)

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. More...
 
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. More...
 
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. More...
 
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. More...
 
template<class T1 , class T2 , size_t N1>
Array< decltype(T1 {} *T2 {}), N1 > operator* (const Array< T1, N1 > &a, T2 b)
 Array * Scalar. More...
 
template<class T1 , class T2 , size_t N2>
Array< decltype(T1 {} *T2 {}), N2 > operator* (T1 a, const Array< T2, N2 > &b)
 Scalar * Array. More...
 
template<class T1 , class T2 , size_t N1>
Array< T1, N1 > & operator*= (Array< T1, N1 > &a, T2 b)
 Array *= Scalar. More...
 
template<class T1 , class T2 , size_t N1>
Array< decltype(T1 {}/T2 {}), N1 > operator/ (const Array< T1, N1 > &a, T2 b)
 Array / Scalar. More...
 
template<class T1 , class T2 , size_t N1>
Array< T1, N1 > & operator/= (Array< T1, N1 > &a, T2 b)
 Array /= Scalar. More...
 
template<class T , size_t N>
Array< decltype(-T {}), N > operator- (const Array< T, N > &a)
 -Array More...
 

Member Typedef Documentation

◆ type

using type = T

Definition at line 34 of file Array.hpp.

Member Function Documentation

◆ operator[]() [1/2]

T & operator[] ( size_t  index)
inline

Get the element at the given index.

Note
Bounds checking is performed. If fatal errors are disabled, the last element is returned if the index is out of bounds.
Parameters
indexThe (zero-based) index of the element to return.

Definition at line 46 of file Array.hpp.

◆ operator[]() [2/2]

const T & operator[] ( size_t  index) const
inline

Get the element at the given index.

Note
Bounds checking is performed. If fatal errors are disabled, the last element is returned if the index is out of bounds.
Parameters
indexThe (zero-based) index of the element to return.

Definition at line 63 of file Array.hpp.

◆ begin() [1/2]

T * begin ( )
inline

Get a pointer to the first element.

Definition at line 74 of file Array.hpp.

◆ begin() [2/2]

const T * begin ( ) const
inline

Get a pointer to the first element.

Definition at line 79 of file Array.hpp.

◆ end() [1/2]

T * end ( )
inline

Get a pointer to the memory beyond the array.

Definition at line 84 of file Array.hpp.

◆ end() [2/2]

const T * end ( ) const
inline

Get a pointer to the memory beyond the array.

Definition at line 89 of file Array.hpp.

◆ operator==()

bool operator== ( const Array< T, N > &  rhs) const
inline

Check the equality of all elements in two arrays.

Parameters
rhsThe array to compare this array to.

Definition at line 97 of file Array.hpp.

◆ operator!=()

bool operator!= ( const Array< T, N > &  rhs) const
inline

Check the inequality of all elements in two arrays.

Parameters
rhsThe array to compare this array to.

Definition at line 112 of file Array.hpp.

◆ slice() [1/2]

ArraySlice< T, abs_diff(Start, End)+1,(End< Start), false > slice ( )

Get a view on a slice of the Array.

Doesn't copy the contents of the array, it's just a reference to the original array.

Template Parameters
StartThe start index of the slice.
EndThe end index of the slice.

◆ slice() [2/2]

ArraySlice< T, abs_diff(Start, End)+1,(End< Start), true > slice ( ) const

Get a read-only view on a slice of the Array.

Doesn't copy the contents of the array, it's just a reference to the original array.

Template Parameters
StartThe start index of the slice.
EndThe end index of the slice.

◆ cslice()

ArraySlice< T, abs_diff(Start, End)+1,(End< Start), true > cslice ( ) const
inline

Get a read-only view on a slice of the Array.

Doesn't copy the contents of the array, it's just a reference to the original array.

Template Parameters
StartThe start index of the slice.
EndThe end index of the slice.

Definition at line 142 of file Array.hpp.

Member Data Documentation

◆ data

T data[N]

Definition at line 33 of file Array.hpp.

◆ length

constexpr size_t length = N
staticconstexpr

Definition at line 35 of file Array.hpp.


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