# std::ranges::chunk_view<V>::iterator

From cppreference.com
< cpp‎ | ranges‎ | chunk view

template< bool Const > class /*iterator*/ |  | (since C++23)

The return type of `chunk_view::begin`, and of `chunk_view::end` when the underlying view `V` is a `common_range`.

Used only if `V` models `forward_range`.

The type /*iterator*/<true> is returned by the const-qualified overloads. The type /*iterator*/<false> is returned by the non-const-qualified overloads.

The name of this class template (shown here as /*iterator*/) is unspecified.

### Data members

Typical implementations of /*iterator*/ hold four non-static data members:

- `current_` of type ranges::iterator_t<Base>, that holds an iterator to the first element of current chunk in the underlying sequence (i.e. the begin of a chunk);
- `end_` of type ranges::sentinel_t<Base>, that holds a sentinel to the end of the underlying sequence;
- `n_` of type ranges::range_difference_t<Base>, that holds initial number of elements in the chunk (the last chunk can be smaller);
- `missing_` of type ranges::range_difference_t<Base>, that usually equals to ranges::advance(current_, n_, end_);.

These names are for exposition only.

### Member types

Member type | Definition
`Parent` (private) | const chunk_view if Const is true, otherwise chunk_view. The name is for exposition only.
`Base` (private) | const V if Const is true, otherwise V. The name is for exposition only.
`iterator_category` | std::input_iterator_tag
`iterator_concept` | std::random_access_iterator_tag, if `Base` models `random_access_range`. Otherwise, std::bidirectional_iterator_tag, if `Base` models `bidirectional_range`. Otherwise, std::forward_iterator_tag.
`value_type` | decltype(views::take(ranges::subrange(current_, end_), n_));.
`difference_type` | ranges::range_difference_t<Base>

### Member functions

(constructor) (C++23) | constructs an iterator (public member function)
base (C++23) | returns an iterator to current element (public member function)
operator* (C++23) | accesses the element (public member function)
operator[] (C++23) | accesses an element by index (public member function)
operator++operator++(int)operator--operator--(int)operator+=operator-= (C++23) | advances or decrements the underlying iterator (public member function)

### Non-member functions

operator==operator<operator>operator<=operator>=operator<=> (C++23) | compares the underlying iterators (function)
operator+operator- (C++23) | performs iterator arithmetic (function)

### Example

| This section is incomplete Reason: no example

### References

- C++23 standard (ISO/IEC 14882:2023):

  - 26.7.28.7 Class template `chunk_view::iterator` for forward ranges [range.chunk.fwd.iter]

### See also

Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/ranges/chunk_view/iterator&oldid=151619"