std::ranges::split_view<V,Pattern>::итератор
class /*iterator*/; |
(с C++20) (только для примера*) |
Тип возвращаемого значения split_view::begin. Это forward_iterator, поэтому ожидается, что V моделирует по крайней мере forward_range.
Типы членов
| Тип члена | Определение |
|---|---|
iterator_concept
|
std::forward_iterator_tag
|
iterator_category
|
std::input_iterator_tag
|
value_type
|
ranges::subrange<ranges::iterator_t<V>>
|
difference_type
|
ranges::range_difference_t<V>
|
Члены данных
| Название члена | Определение |
|---|---|
parent_ (private)
|
Указатель типа ranges::split_view<V, Pattern>* на родительский объект split_view.(член объекта, только для примера*) |
cur_ (private)
|
Итератор типа ranges::iterator_t<V> в базовом view, указывающий на начало текущего поддиапазона.(член объекта, только для примера*) |
next_ (private)
|
Поддиапазон типа ranges::subrange<ranges::iterator_t<V>> до позиции шаблона, следующего за текущим поддиапазоном.(член объекта, только для примера*) |
trailing_empty_ (private)
|
Логический флаг, указывающий, достигнут ли пустой заключительный поддиапазон (если таковой есть). (член объекта, только для примера*) |
Члены-функции
|
(конструктор)
(C++20)
|
создает итератор (публичная функция-член) |
|
base
(C++20)
|
возвращает базовый итератор (публичная функция-член) |
|
operator*
(C++20)
|
возвращает текущий поддиапазон (публичная функция-член) |
|
operator++operator++(int)
(C++20)
|
перемещает итератор (публичная функция-член) |
std::ranges::split_view::итератор::итератор
/*iterator*/() = default; |
(1) | (с C++20) |
constexpr /*iterator*/( split_view& parent, ranges::iterator_t<V> current,
ranges::subrange<ranges::iterator_t<V>> next );
|
(2) | (с C++20) |
-
ranges::split_view* parent_ = nullptr;, -
ranges::iterator_t<V> cur_ = ranges::iterator_t<V>();, -
ranges::subrange<ranges::iterator_t<V>> next_ = ranges::subrange<ranges::iterator_t<V>>();и -
bool trailing_empty_ = false;.
-
ranges::split_view* parent_ = std::addressof(parent);, -
ranges::iterator_t<V> cur_ = std::move(current);, -
ranges::subrange<ranges::iterator_t<V>> next_ = std::move(next);и -
bool trailing_empty_ = false;.
std::ranges::split_view::итератор::base
constexpr const ranges::iterator_t<V> base() const; |
(с C++20) |
Эквивалентно return cur_;.
std::ranges::split_view::итератор::operator*
constexpr ranges::range_reference_t<V> operator*() const; |
(с C++20) |
Эквивалентно return {cur_, next_.begin()};.
std::ranges::split_view::итератор::operator++
constexpr /*iterator*/& operator++(); |
(1) | (с C++20) |
constexpr void operator++( int ); |
(2) | (с C++20) |
cur_ = next_.begin();
if (cur_ != ranges::end(parent_->base_))
{
if (cur_ = next_.end(); cur_ == ranges::end(parent_->base_))
{
trailing_empty_ = true;
next_ = {cur_, cur_};
}
else
next_ = parent_->find_next(cur_);
}
else
trailing_empty_ = false;
return *this;
auto tmp = *this; ++*this; return tmp;.Функции вне класса
|
operator==
(C++20)
|
сравнивает базовые итераторы (функция) |
operator==(std::ranges::split_view::итератор, std::ranges::split_view::итератор)
friend constexpr bool operator==( const /*iterator*/& x, const /*iterator*/& y ); |
(с C++20) |
Эквивалентно return x.cur_ == y.cur_ and x.trailing_empty_ == y.trailing_empty_;.
Оператор != синтезируется из operator==.
Эта функция не видна для обычного неквалифицированного или квалифицированного поиска и может быть найдена только с помощью поиска зависимого от аргументов, когда std::ranges::split_view::iterator является связанным классом аргументов.
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/ranges/split_view/iterator