![]() |
deal.II version GIT relicensing-6834-g5b78e6bcdf 2026-10-01 11:20:01+00:00
|
#include <deal.II/base/synchronous_iterator.h>
A class that represents a set of iterators each of which are incremented by one at the same time. This is typically used in calls like std::transform(a.begin(), a.end(), b.begin(), functor); where we have synchronous iterators marching through the containers a,b. If an object of this type represents the end of a range, only the first element is considered (we only have a.end(), not b.end()). An example of how this class is used is given in step-35.
The template argument of the current class shall be of type std::tuple with arguments equal to the iterator types.
The individual iterators can be accessed using std::get<X>(synchronous_iterator.iterators) where X is the number corresponding to the desired iterator.
This type, and the helper functions associated with it, are used as the Value concept for the blocked_range type of the Threading Building Blocks.
Definition at line 47 of file synchronous_iterator.h.
Public Types | |
| using | difference_type = std::size_t |
| using | iterator_category = std::bidirectional_iterator_tag |
| using | value_type = Iterators |
| using | pointer = Iterators * |
| using | reference = Iterators & |
Public Member Functions | |
| SynchronousIterators (const Iterators &i) | |
| const Iterators & | operator* () const |
| Iterators & | operator* () |
Private Attributes | |
| Iterators | iterators |
Related Symbols | |
(Note that these are not member symbols.) | |
| template<typename Iterators > | |
| bool | operator< (const SynchronousIterators< Iterators > &a, const SynchronousIterators< Iterators > &b) |
| template<typename Iterators > | |
| std::size_t | operator- (const SynchronousIterators< Iterators > &a, const SynchronousIterators< Iterators > &b) |
| template<typename I1 , typename I2 > | |
| void | advance (std::tuple< I1, I2 > &t, const unsigned int n) |
| template<typename I1 , typename I2 , typename I3 > | |
| void | advance (std::tuple< I1, I2, I3 > &t, const unsigned int n) |
| template<typename I1 , typename I2 , typename I3 , typename I4 > | |
| void | advance (std::tuple< I1, I2, I3, I4 > &t, const unsigned int n) |
| template<typename I1 , typename I2 > | |
| void | prev (std::tuple< I1, I2 > &t) |
| template<typename I1 , typename I2 , typename I3 > | |
| void | prev (std::tuple< I1, I2, I3 > &t) |
| template<typename I1 , typename I2 , typename I3 , typename I4 > | |
| void | prev (std::tuple< I1, I2, I3, I4 > &t) |
| template<typename I1 , typename I2 > | |
| void | advance_by_one (std::tuple< I1, I2 > &t) |
| template<typename I1 , typename I2 , typename I3 > | |
| void | advance_by_one (std::tuple< I1, I2, I3 > &t) |
| template<typename I1 , typename I2 , typename I3 , typename I4 > | |
| void | advance_by_one (std::tuple< I1, I2, I3, I4 > &t) |
| template<typename Iterators > | |
| SynchronousIterators< Iterators > | operator+ (const SynchronousIterators< Iterators > &a, const std::size_t n) |
| template<typename Iterators > | |
| SynchronousIterators< Iterators > & | operator++ (SynchronousIterators< Iterators > &a) |
| template<typename Iterators > | |
| SynchronousIterators< Iterators > & | operator-- (SynchronousIterators< Iterators > &a) |
| template<typename Iterators > | |
| SynchronousIterators< Iterators > | operator++ (SynchronousIterators< Iterators > &a, int) |
| template<typename Iterators > | |
| bool | operator!= (const SynchronousIterators< Iterators > &a, const SynchronousIterators< Iterators > &b) |
| using SynchronousIterators< Iterators >::difference_type = std::size_t |
The following traits are necessary for std::distance() to work with SynchronousIterators.
Definition at line 72 of file synchronous_iterator.h.
| using SynchronousIterators< Iterators >::iterator_category = std::bidirectional_iterator_tag |
Definition at line 73 of file synchronous_iterator.h.
| using SynchronousIterators< Iterators >::value_type = Iterators |
Definition at line 74 of file synchronous_iterator.h.
| using SynchronousIterators< Iterators >::pointer = Iterators * |
Definition at line 75 of file synchronous_iterator.h.
| using SynchronousIterators< Iterators >::reference = Iterators & |
Definition at line 76 of file synchronous_iterator.h.
|
inline |
Constructor.
Definition at line 88 of file synchronous_iterator.h.
|
inline |
Dereference const operator. Returns a const reference to the iterators represented by the current class.
Definition at line 96 of file synchronous_iterator.h.
|
inline |
Dereference operator. Returns a reference to the iterators represented by the current class.
Definition at line 105 of file synchronous_iterator.h.
|
related |
Return whether the first element of the first argument is less than the first element of the second argument. Since the objects compared march forward all elements at the same time, comparing the first element is sufficient.
Definition at line 121 of file synchronous_iterator.h.
|
related |
Return the distance between the first and the second argument. Since the objects compared march forward all elements at the same time, differencing the first element is sufficient.
Definition at line 139 of file synchronous_iterator.h.
|
related |
Advance a tuple of iterators by \(n\).
Definition at line 155 of file synchronous_iterator.h.
|
related |
Advance a tuple of iterators by \(n\).
Definition at line 168 of file synchronous_iterator.h.
|
related |
Advance a tuple of iterators by \(n\).
Definition at line 182 of file synchronous_iterator.h.
|
related |
Reverse a tuple of iterators by 1.
Definition at line 197 of file synchronous_iterator.h.
|
related |
Reverse a tuple of iterators by 1.
Definition at line 210 of file synchronous_iterator.h.
|
related |
Reverse a tuple of iterators by 1.
Definition at line 224 of file synchronous_iterator.h.
|
related |
Advance a tuple of iterators by 1.
Definition at line 239 of file synchronous_iterator.h.
|
related |
Advance a tuple of iterators by 1.
Definition at line 252 of file synchronous_iterator.h.
|
related |
Advance a tuple of iterators by 1.
Definition at line 266 of file synchronous_iterator.h.
|
related |
Advance the elements of this iterator by \(n\).
Definition at line 281 of file synchronous_iterator.h.
|
related |
Advance the elements of this iterator by 1 (pre-increment).
Definition at line 295 of file synchronous_iterator.h.
|
related |
Reverse the elements of this iterator by 1 (pre-decrement).
Definition at line 308 of file synchronous_iterator.h.
|
related |
Advance the elements of this iterator by 1 (post-increment).
Definition at line 321 of file synchronous_iterator.h.
|
related |
Compare synch iterators for inequality. Since they march in synch, comparing only the first element is sufficient.
Definition at line 336 of file synchronous_iterator.h.
|
private |
Storage for the iterators represented by the current class.
Definition at line 82 of file synchronous_iterator.h.