Advanced Multi-Physics (AMP)
On-Line Documentation
VectorDataIterator.h
Go to the documentation of this file.
1#ifndef included_AMP_VectorIterators
2#define included_AMP_VectorIterators
3
4#include "AMP/utils/TypeTraits.h"
5#include "AMP/utils/UtilityMacros.h"
6
7#include <iterator>
8
9
10namespace AMP::LinearAlgebra {
11
12
13// Forward deceleration
14class VectorData;
15
16
30template<class TYPE = double>
32{
33public: // iterator_traits
34 using iterator_category = std::random_access_iterator_tag;
35 using value_type = TYPE;
36 using difference_type = ptrdiff_t;
37 using pointer = const TYPE *;
38 using reference = const TYPE &;
39
40private:
43 size_t d_hashcode;
44 size_t *d_blockSize;
45 TYPE **d_data;
46 uint64_t *d_typeHash;
48
49 void advance( size_t );
50 void recede( size_t );
51
52public:
55
58
64
70
76
82
83
91 explicit VectorDataIterator( VectorData *p, size_t position );
92
93
96
97
100
101
103 inline size_t size() const { return d_size; }
104
105
107 inline size_t position() const { return d_pos; }
108
109
118 inline TYPE &operator*();
119
120
127 inline bool operator==( const VectorDataIterator &rhs ) const;
128
133 inline bool operator!=( const VectorDataIterator &rhs ) const;
134
136 inline bool operator<( const VectorDataIterator &rhs ) const;
137
139 inline bool operator>( const VectorDataIterator &rhs ) const;
140
142 inline bool operator<=( const VectorDataIterator &rhs ) const;
143
145 inline bool operator>=( const VectorDataIterator &rhs ) const;
146
151
156
161
166
179
191
204
216
237 int operator-( const VectorDataIterator &rhs ) const;
238
239
249 TYPE &operator[]( int i );
250};
251
252
253} // namespace AMP::LinearAlgebra
254
255
256#include "AMP/vectors/data/VectorDataIterator.hpp"
257
258#endif
Iterator for local data in a vector.
size_t position() const
Return the position of the iterator.
bool operator>=(const VectorDataIterator &rhs) const
Greater than or equal operator.
bool operator<=(const VectorDataIterator &rhs) const
Less than or equal operator.
VectorDataIterator & operator-=(int i)
Subtract a constant to this iterator.
VectorDataIterator operator++(int)
Increment the iterator.
VectorDataIterator(const VectorDataIterator &rhs)
Copy constructor.
VectorDataIterator & operator+=(int i)
Add a constant to this iterator.
int operator-(const VectorDataIterator &rhs) const
Compute distance between two iterators.
bool operator>(const VectorDataIterator &rhs) const
Greater than operator.
VectorDataIterator(VectorData *p, size_t position)
Constructor from a vector.
bool operator==(const VectorDataIterator &rhs) const
Test for equality.
TYPE & operator*()
Dereference the iterator.
VectorDataIterator operator--(int)
Decrement the iterator.
VectorDataIterator & operator++()
Increment the iterator.
bool operator<(const VectorDataIterator &rhs) const
Less than operator.
VectorDataIterator operator-(int i)
Subtract a constant to this iterator.
VectorDataIterator(VectorDataIterator &&rhs)
VectorDataIterator & operator=(const VectorDataIterator &rhs)
bool operator!=(const VectorDataIterator &rhs) const
Test for inequality.
VectorDataIterator end() const
Return a new iterator to the end of this iterator.
std::random_access_iterator_tag iterator_category
TYPE & operator[](int i)
Return data a distance from the current iterator.
VectorDataIterator & operator=(VectorDataIterator &&rhs)
VectorDataIterator operator+(int i)
Add a constant to this iterator.
size_t size() const
Return the size of the iterator.
typename AMP::remove_cvref_t< TYPE > TYPE2
VectorDataIterator begin() const
Return a new iterator to the beginning of this iterator.
VectorDataIterator()
Default constructor.
VectorDataIterator & operator--()
Decrement the iterator.
A class used to hold vector data.
Definition VectorData.h:38
typename std::remove_cv_t< typename std::remove_reference_t< T > > remove_cvref_t
Definition TypeTraits.h:108



Advanced Multi-Physics (AMP)
Oak Ridge National Laboratory
Idaho National Laboratory
Los Alamos National Laboratory
This page automatically produced from the
source code by doxygen
Last updated: Tue Mar 10 2026 13:06:41.
Comments on this page