| 
| 
  | 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:0x5565aad6f1f0
Second vector:0x5565aad6f1d0
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:0x7f4fc6200200
Second vector:0x7f4fc6200000
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 ]