|
OpenABF 2.1.0
|
N-dimensional vector class. More...
#include <OpenABF/OpenABF.hpp>
Public Types | |
| using | value_type = T |
| using | size_type = typename Container::size_type |
| using | difference_type = typename Container::difference_type |
| using | reference = value_type & |
| using | const_reference = const value_type & |
| using | pointer = value_type * |
| using | const_pointer = const value_type * |
| using | iterator = typename Container::iterator |
| using | const_iterator = typename Container::const_iterator |
| using | reverse_iterator = typename Container::reverse_iterator |
| using | const_reverse_iterator = typename Container::const_reverse_iterator |
Public Member Functions | |
| Vec () | |
| Default constructor. | |
| template<typename... Args> | |
| Vec (Args... args) | |
| Construct with element values. | |
| template<typename Vector > | |
| Vec (const Vector &vec) | |
| Copy constructor. | |
| constexpr reference | at (size_type pos) |
| Bounds-checked element access. | |
| constexpr const_reference | at (size_type pos) const |
| Bounds-checked element access. | |
| constexpr reference | operator[] (size_type i) |
| Element access. | |
| constexpr const_reference | operator[] (size_type i) const |
| Element access. | |
| constexpr reference | front () |
| First element. | |
| constexpr const_reference | front () const |
| First element. | |
| constexpr reference | back () |
| Last element. | |
| constexpr const_reference | back () const |
| Last element. | |
| constexpr pointer | data () |
| Get a pointer to the first element of the raw data. | |
| constexpr const_pointer | data () const |
| Get a pointer to the first element of the raw data. | |
| constexpr iterator | begin () noexcept |
| Get an iterator to the first element of the vector. | |
| constexpr const_iterator | begin () const noexcept |
| Get an iterator to the first element of the vector. | |
| constexpr const_iterator | cbegin () const noexcept |
| Get an iterator to the first element of the vector. | |
| constexpr iterator | end () noexcept |
| Get an iterator to one past the last element in the vector. | |
| constexpr const_iterator | end () const noexcept |
| Get an iterator to one past the last element in the vector. | |
| constexpr const_iterator | cend () const noexcept |
| Get an iterator to one past the last element in the vector. | |
| constexpr reverse_iterator | rbegin () noexcept |
| Get an iterator to the first element of the reverse vector. | |
| constexpr const_reverse_iterator | rbegin () const noexcept |
| Get an iterator to the first element of the reverse vector. | |
| constexpr const_reverse_iterator | crbegin () const noexcept |
| Get an iterator to the first element of the reverse vector. | |
| constexpr reverse_iterator | rend () noexcept |
| Get an iterator to one past the last element in the reverse vector. | |
| constexpr const_reverse_iterator | rend () const noexcept |
| Get an iterator to one past the last element in the reverse vector. | |
| constexpr const_reverse_iterator | crend () const noexcept |
| Get an iterator to one past the last element in the reverse vector. | |
| constexpr bool | empty () const noexcept |
| Return whether the vector is empty (uninitialized) | |
| constexpr size_type | size () const noexcept |
| Return the number of elements in the vector. | |
| constexpr void | fill (const T &value) |
| Fill the vector with a value. | |
| constexpr void | swap (Vec &other) noexcept |
| Swap this vector with another vector. | |
| bool | operator== (const Vec &rhs) const |
| Equality comparison operator. | |
| bool | operator!= (const Vec &rhs) const |
| Inequality comparison operator. | |
| template<class Vector > | |
| Vec & | operator= (const Vector &b) |
| Assignment operator. | |
| template<typename T2 > | |
| Vec & | operator= (const std::initializer_list< T2 > &b) |
| Assignment operator for std::initializer_list. | |
| template<class Vector > | |
| Vec & | operator+= (const Vector &b) |
| Addition assignment operator. | |
| template<class Vector > | |
| Vec & | operator-= (const Vector &b) |
| Subtraction assignment operator. | |
| template<typename T2 , std::enable_if_t< std::is_arithmetic< T2 >::value, bool > = true> | |
| Vec & | operator*= (const T2 &b) |
| Multiplication assignment operator. | |
| template<typename T2 , std::enable_if_t< std::is_arithmetic< T2 >::value, bool > = true> | |
| Vec & | operator/= (const T2 &b) |
| Division assignment operator. | |
| template<class Vector > | |
| T | dot (const Vector &v) |
| Compute the vector dot product (i.e. inner product) | |
| template<class Vector , std::size_t D = Dims> | |
| std::enable_if_t< D==3, Vec > | cross (const Vector &v) |
| Compute the vector cross product. | |
| T | magnitude () const |
| Compute the vector magnitude. | |
| Vec | unit () const |
| Return the unit vector of this vector. | |
Private Types | |
| using | Container = std::array< T, Dims > |
Private Attributes | |
| Container | val_ {} |
Friends | |
| template<class Vector > | |
| Vec | operator+ (Vec lhs, const Vector &rhs) |
| Addition operator. | |
| template<class Vector > | |
| Vec | operator- (Vec lhs, const Vector &rhs) |
| Subtraction operator. | |
| template<typename T2 , std::enable_if_t< std::is_arithmetic< T2 >::value, bool > = true> | |
| Vec | operator* (Vec lhs, const T2 &rhs) |
| Multiplication operator. | |
| template<typename T2 , std::enable_if_t< std::is_arithmetic< T2 >::value, bool > = true> | |
| Vec | operator/ (Vec lhs, const T2 &rhs) |
| Division operator. | |
N-dimensional vector class.
Essentially a wrapper around std::array that makes it more convenient for vector math purposes.
| T | Element type |
| Dims | Number of elements |
| using OpenABF::Vec< T, Dims, >::const_iterator = typename Container::const_iterator |
Const iterator type
| using OpenABF::Vec< T, Dims, >::const_pointer = const value_type* |
Const pointer type
| using OpenABF::Vec< T, Dims, >::const_reference = const value_type& |
Const reference type
| using OpenABF::Vec< T, Dims, >::const_reverse_iterator = typename Container::const_reverse_iterator |
Const reverse iterator type
|
private |
Underlying element storage
| using OpenABF::Vec< T, Dims, >::difference_type = typename Container::difference_type |
Difference type
| using OpenABF::Vec< T, Dims, >::iterator = typename Container::iterator |
Iterator type
| using OpenABF::Vec< T, Dims, >::pointer = value_type* |
Pointer type
| using OpenABF::Vec< T, Dims, >::reference = value_type& |
Reference type
| using OpenABF::Vec< T, Dims, >::reverse_iterator = typename Container::reverse_iterator |
Reverse iterator type
| using OpenABF::Vec< T, Dims, >::size_type = typename Container::size_type |
Vector size type
| using OpenABF::Vec< T, Dims, >::value_type = T |
Element type
|
inlineexplicit |
Construct with element values.
The number of arguments provided must match Dims.