20 #ifndef TILEDARRAY_RANGE_ITERATOR_H__INCLUDED 21 #define TILEDARRAY_RANGE_ITERATOR_H__INCLUDED 30 template <
typename,
typename>
37 template <
typename T,
typename Container>
41 template <
typename T,
typename Container>
60 template <
typename T,
typename Container>
76 container_(other.container_), current_(other.current_) {
84 container_(c), current_(v, v + c->rank())
92 current_ = other.current_;
93 container_ = other.container_;
98 const Container*
container()
const {
return container_; }
110 container_->increment(current_);
120 container_->increment(current_);
131 container_->advance(current_, n);
135 TA_ASSERT(container_ == other.container_);
136 return container_->distance_to(current_, other.current_);
141 const Container* container_;
142 std::vector<T> current_;
155 template <
typename T,
typename Container>
159 return ((*left_it) == (*right_it)) &&
160 (left_it.container() == right_it.container());
172 template <
typename T,
typename Container>
176 return ((*left_it) != (*right_it)) ||
177 (left_it.container() != right_it.container());
184 template <
typename T,
typename Container>
191 template <
typename T,
typename Container>
201 #endif // TILEDARRAY_RANGE_ITERATOR_H__INCLUDED difference_type distance_to(const RangeIterator_ &other) const
bool operator!=(const TileReference< Impl > &a, const TileReference< Impl > &b)
inequality operator for TileReference objects
pointer operator->() const
Pointer operator.
RangeIterator(const T *v, const Container *c)
Construct an index iterator.
const value_type & reference
Iterator reference type.
RangeIterator_ & operator=(const RangeIterator_ &other)
Copy constructor.
TiledArray::detail::RangeIterator< T, Container >::difference_type distance(const TiledArray::detail::RangeIterator< T, Container > &, const TiledArray::detail::RangeIterator< T, Container > &)
std::ptrdiff_t difference_type
Iterator category tag.
void advance(difference_type n)
void advance(TiledArray::detail::RangeIterator< T, Container > &, typename TiledArray::detail::RangeIterator< T, Container >::difference_type)
RangeIterator< T, Container > RangeIterator_
This class type.
reference operator*() const
Dereference operator.
const Container * container() const
RangeIterator(const RangeIterator_ &other)
Copy constructor.
std::vector< T > value_type
Iterator value type.
bool operator==(const TileReference< Impl > &a, const TileReference< Impl > &b)
comparison operator for TileReference objects
RangeIterator_ operator++(int)
Increment operator.
std::input_iterator_tag iterator_category
RangeIterator_ & operator++()
Increment operator.
const value_type * pointer
Iterator pointer type.
Coordinate index iterate.