|
| Vector ()=default |
| Constructs an empty array with zero size.
|
|
| Vector (const Vector &)=default |
| Copy constructor (makes a deep copy).
|
|
| Vector (const Vector &vector, const AllocatorType &allocator) |
| Copy constructor with a specific allocator (makes a deep copy).
|
|
template<typename VectorExpression , typename... , typename = std::enable_if_t< Expressions::HasEnabledExpressionTemplates< VectorExpression >::value && ! IsArrayType< VectorExpression >::value >> |
| Vector (const VectorExpression &expression) |
| Constructor from expression template.
|
|
| Vector (Vector &&) noexcept=default |
| Default move constructor.
|
|
ConstViewType | getConstView (IndexType begin=0, IndexType end=0) const |
| Returns a non-modifiable view of the vector.
|
|
ViewType | getView (IndexType begin=0, IndexType end=0) |
| Returns a modifiable view of the vector.
|
|
| operator ConstViewType () const |
| Conversion operator to a non-modifiable view of the vector.
|
|
| operator ViewType () |
| Conversion operator to a modifiable view of the vector.
|
|
template<typename VectorExpression > |
Vector & | operator%= (const VectorExpression &expression) |
| Modulo assignment operator for vector and a vector expression.
|
|
template<typename VectorExpression > |
Vector< Real, Device, Index, Allocator > & | operator%= (const VectorExpression &expression) |
|
template<typename VectorExpression > |
Vector & | operator*= (const VectorExpression &expression) |
| Multiplies elements of this vector and a vector expression and stores the result in this vector.
|
|
template<typename VectorExpression > |
Vector< Real, Device, Index, Allocator > & | operator*= (const VectorExpression &expression) |
|
template<typename VectorExpression > |
Vector & | operator+= (const VectorExpression &expression) |
| Adds elements of this vector and a vector expression and stores the result in this vector.
|
|
template<typename VectorExpression > |
Vector< Real, Device, Index, Allocator > & | operator+= (const VectorExpression &expression) |
|
template<typename VectorExpression > |
Vector & | operator-= (const VectorExpression &expression) |
| Subtracts elements of this vector and a vector expression and stores the result in this vector.
|
|
template<typename VectorExpression > |
Vector< Real, Device, Index, Allocator > & | operator-= (const VectorExpression &expression) |
|
template<typename VectorExpression > |
Vector & | operator/= (const VectorExpression &expression) |
| Divides elements of this vector and a vector expression and stores the result in this vector.
|
|
template<typename VectorExpression > |
Vector< Real, Device, Index, Allocator > & | operator/= (const VectorExpression &expression) |
|
template<typename T , typename... , typename = std::enable_if_t< std::is_convertible_v< T, Real > || IsArrayType< T >::value >> |
Array< Real, Device, Index, Allocator > & | operator= (const T &data) |
| Assigns a value or an array - same as Array::operator=.
|
|
Vector & | operator= (const Vector &)=default |
| Copy-assignment operator for copying data from another vector.
|
|
template<typename VectorExpression , typename... , typename = std::enable_if_t< Expressions::HasEnabledExpressionTemplates< VectorExpression >::value && ! IsArrayType< VectorExpression >::value >> |
Vector & | operator= (const VectorExpression &expression) |
| Assigns a vector expression to this vector.
|
|
template<typename VectorExpression , typename... , typename > |
Vector< Real, Device, Index, Allocator > & | operator= (const VectorExpression &expression) |
|
Vector & | operator= (Vector &&) noexcept(false)=default |
| Move-assignment operator for acquiring data from rvalues.
|
|
| Array ()=default |
| Constructs an empty array with zero size.
|
|
| Array (Array &&array) noexcept |
| Move constructor for initialization from rvalues.
|
|
| Array (const AllocatorType &allocator) |
| Constructs an empty array and sets the provided allocator.
|
|
| Array (const Array &array) |
| Copy constructor (makes a deep copy).
|
|
| Array (const Array &array, const AllocatorType &allocator) |
| Copy constructor with a specific allocator (makes a deep copy).
|
|
| Array (const Array &array, IndexType begin, IndexType size=0, const AllocatorType &allocator=AllocatorType()) |
| Copy constructor (makes a deep copy).
|
|
template<typename Value_ , typename Device_ , typename Index_ , typename Allocator_ > |
| Array (const Array< Value_, Device_, Index_, Allocator_ > &a) |
| Copy constructor from array with different template parameters.
|
|
template<typename InValue > |
| Array (const std::initializer_list< InValue > &list, const AllocatorType &allocator=AllocatorType()) |
| Constructor which initializes the array by copying elements from std::initializer_list, e.g. {...} .
|
|
template<typename InValue > |
| Array (const std::list< InValue > &list, const AllocatorType &allocator=AllocatorType()) |
| Constructor which initializes the array by copying elements from std::list.
|
|
template<typename InValue > |
| Array (const std::vector< InValue > &vector, const AllocatorType &allocator=AllocatorType()) |
| Constructor which initializes the array by copying elements from std::vector.
|
|
| Array (IndexType size, const AllocatorType &allocator=AllocatorType()) |
| Constructs an array with given size.
|
|
| Array (IndexType size, ValueType value, const AllocatorType &allocator=AllocatorType()) |
| Constructs an array with given size and value.
|
|
| Array (ValueType *data, IndexType size, const AllocatorType &allocator=AllocatorType()) |
| Constructs an array with given size and copies data from given pointer.
|
|
virtual | ~Array () |
| Destructor.
|
|
__cuda_callable__ bool | empty () const |
| Returns true if the current array size is zero.
|
|
template<typename Function > |
void | forAllElements (Function &&f) |
| Process the lambda function f for each array element.
|
|
template<typename Function > |
void | forAllElements (Function &&f) const |
| Process the lambda function f for each array element for constant instances.
|
|
template<typename Function > |
void | forElements (IndexType begin, IndexType end, Function &&f) |
| Process the lambda function f for each array element in interval [ begin, end).
|
|
template<typename Function > |
void | forElements (IndexType begin, IndexType end, Function &&f) const |
| Process the lambda function f for each array element in interval [ begin, end) for constant instances of the array.
|
|
AllocatorType | getAllocator () const |
| Returns the allocator associated with the array.
|
|
__cuda_callable__ Value * | getArrayData () |
| Returns a raw pointer to the data.
|
|
__cuda_callable__ const Value * | getArrayData () const |
| Returns a const-qualified raw pointer to the data.
|
|
ConstViewType | getConstView (IndexType begin=0, IndexType end=0) const |
| Returns a non-modifiable view of the array.
|
|
__cuda_callable__ Value * | getData () |
| Returns a raw pointer to the data.
|
|
__cuda_callable__ const Value * | getData () const |
| Returns a const-qualified raw pointer to the data.
|
|
__cuda_callable__ ValueType | getElement (IndexType i) const |
| Returns the value of the i-th element.
|
|
virtual std::string | getSerializationTypeVirtual () const |
| Returns a string representation of the array type in C++ style, with a placeholder in place of Device and Allocator.
|
|
__cuda_callable__ IndexType | getSize () const |
| Returns the current array size.
|
|
ViewType | getView (IndexType begin=0, IndexType end=0) |
| Returns a modifiable view of the array.
|
|
void | load (const String &fileName) |
| Method for loading the array from a binary file fileName.
|
|
| operator ConstViewType () const |
| Conversion operator to a non-modifiable view of the array.
|
|
| operator ViewType () |
| Conversion operator to a modifiable view of the array.
|
|
template<typename ArrayT > |
bool | operator!= (const ArrayT &array) const |
| Compares the array with another array-like container.
|
|
__cuda_callable__ Value & | operator() (IndexType i) |
| Accesses the i-th element of the array.
|
|
__cuda_callable__ const Value & | operator() (IndexType i) const |
| Accesses the i-th element of the array.
|
|
Array & | operator= (Array &&array) noexcept(false) |
| Move-assignment operator for acquiring data from rvalues.
|
|
Array & | operator= (const Array &array) |
| Copy-assignment operator for copying data from another array.
|
|
template<typename InValue > |
Array & | operator= (const std::list< InValue > &list) |
| Copies elements from std::list to this array.
|
|
template<typename InValue > |
Array< Value, Device, Index, Allocator > & | operator= (const std::list< InValue > &list) |
|
template<typename InValue > |
Array & | operator= (const std::vector< InValue > &vector) |
| Copies elements from std::vector to this array.
|
|
template<typename InValue > |
Array< Value, Device, Index, Allocator > & | operator= (const std::vector< InValue > &vector) |
|
template<typename T , typename... , typename = std::enable_if_t< std::is_convertible< T, ValueType >::value || IsArrayType< T >::value >> |
Array & | operator= (const T &data) |
| Assigns either array-like container or a single value.
|
|
template<typename T , typename... , typename > |
Array< Value, Device, Index, Allocator > & | operator= (const T &data) |
|
template<typename ArrayT > |
bool | operator== (const ArrayT &array) const |
| Compares the array with another array-like container.
|
|
__cuda_callable__ Value & | operator[] (IndexType i) |
| Accesses the i-th element of the array.
|
|
__cuda_callable__ const Value & | operator[] (IndexType i) const |
| Accesses the i-th element of the array.
|
|
void | reset () |
| Resets the array to the empty state.
|
|
void | resize (IndexType size) |
| Method for resizing the array.
|
|
void | resize (IndexType size, ValueType value) |
| Method for resizing the array with an initial value.
|
|
void | save (const String &fileName) const |
| Method for saving the array to a binary file fileName.
|
|
__cuda_callable__ void | setElement (IndexType i, ValueType value) |
| Sets the value of the i-th element to v.
|
|
template<typename ArrayT > |
void | setLike (const ArrayT &array) |
| Sets the same size as the size of an existing array.
|
|
void | setSize (IndexType size) |
| Method for setting the array size.
|
|
void | setValue (ValueType value, IndexType begin=0, IndexType end=0) |
| Sets elements of the array to given value.
|
|
void | swap (Array &array) |
| Swaps this array with another.
|
|
template<
typename Real = double,
typename Device = Devices::Host,
typename Index = int,
typename Allocator = typename Allocators::Default< Device >::template Allocator< Real >>
class TNL::Containers::Vector< Real, Device, Index, Allocator >
Vector extends Array with algebraic operations.
The template parameters have the same meaning as in Array, with Real corresponding to Array's Value parameter.
- Template Parameters
-
Real | An arithmetic type for the vector values, e.g. float or double . |
Device | The device to be used for the execution of vector operations. |
Index | The indexing type. |
Allocator | The type of the allocator used for the allocation and deallocation of memory used by the array. By default, an appropriate allocator for the specified Device is selected with Allocators::Default. |
- Example
#include <iostream>
#include <TNL/Containers/Vector.h>
#include <TNL/Containers/Array.h>
#include <TNL/Devices/Host.h>
#include <TNL/Devices/Cuda.h>
template< typename Device >
void
VectorExample()
{
vector1 = 0;
vector2 = 1;
vector2.swap( vector1 );
vector2.setElement( 2, 4 );
cout <<
"First vector:" << vector1.getData() << endl;
cout <<
"Second vector:" << vector2.getData() << endl;
vector2.reset();
cout <<
"Second vector after reset:" << vector2.getData() << endl;
cout <<
"The smallest element is:" << min( vect ) << endl;
cout <<
"The absolute biggest element is:" << max( abs( vect ) ) << endl;
cout <<
"Sum of all vector elements:" << sum( vect ) << endl;
vect *= 2.0;
cout <<
"Vector multiplied by 2:" << vect << endl;
}
int
main()
{
VectorExample< Devices::Host >();
#ifdef __CUDACC__
VectorExample< Devices::Cuda >();
#endif
}
Vector extends Array with algebraic operations.
Definition Vector.h:36
The main TNL namespace.
Definition AtomicOperations.h:9
- Output
Running vector example on the host system:
First vector:0x6158c55749e0
Second vector:0x6158c55749c0
Second vector after reset:0
The smallest element is:-3
The absolute biggest element is:3
Sum of all vector elements:3
Vector multiplied by 2:[ 2, 4, -6, 6 ]
Running vector example on the CUDA device:
First vector:0x7edffcc00200
Second vector:0x7edffcc00000
Second vector after reset:0
The smallest element is:-3
The absolute biggest element is:3
Sum of all vector elements:3
Vector multiplied by 2:[ 2, 4, -6, 6 ]