|
|
| 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.
|
|
virtual | ~Array () |
| | Destructor.
|
| __cuda_callable__ bool | empty () const |
| | Returns true if the current array size is zero.
|
| void | forAllElements (Function &&f) |
| | Process the lambda function f for each array element.
|
| void | forElements (IndexType begin, IndexType end, Function &&f) |
| | Process the lambda function f for each array element in interval [ begin, end).
|
|
AllocatorType | getAllocator () const |
| | Returns the allocator associated with the array.
|
| __cuda_callable__ const double * | 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__ const double * | 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.
|
| __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.
|
| bool | operator!= (const ArrayT &array) const |
| | Compares the array with another array-like container.
|
| __cuda_callable__ double & | operator() (IndexType i) |
| | Accesses the i-th element of the array.
|
|
Array< double, Devices::Host, int, Allocator > & | operator= (const std::list< InValue > &list) |
|
Array< double, Devices::Host, int, Allocator > & | operator= (const std::vector< InValue > &vector) |
|
Array< double, Devices::Host, int, Allocator > & | operator= (const T &data) |
| bool | operator== (const ArrayT &array) const |
| | Compares the array with another array-like container.
|
| __cuda_callable__ double & | operator[] (IndexType i) |
| | 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 | 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.
|
| 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) noexcept |
| | 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
__cuda_callable__ T abs(const T &n)
This function returns absolute value of given number n.
Definition Math.h:75
constexpr ResultType min(const T1 &a, const T2 &b)
This function returns minimum of two numbers.
Definition Math.h:24
constexpr ResultType max(const T1 &a, const T2 &b)
This function returns maximum of two numbers.
Definition Math.h:49
- Output
Running vector example on the host system:
First vector:0x55e4881ee370
Second vector:0x55e4881ee350
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 ]