std::ranges::split_view<V,Pattern>:: iterator
|
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 > |
Члены данных
| Член | Описание |
ranges::
split_view
<
V, Pattern
>
*
parent_
(private)
|
указатель на родительский объект
split_view
( объект-член только для демонстрации* ) |
ranges::
iterator_t
<
V
>
cur_
(private)
|
итератор в базовом
view
, указывающий на начало текущего поддиапазона
( объект-член только для демонстрации* ) |
ranges::
subrange
<
ranges::
iterator_t
<
V
>>
next_
(private)
|
поддиапазон до позиции шаблона, следующего за текущим поддиапазоном
( объект-член только для демонстрации* ) |
bool
trailing_empty_
(private)
|
флаг, указывающий, был ли достигнут пустой завершающий поддиапазон (если есть)
( объект-член только для демонстрации* ) |
Функции-члены
|
(constructor)
(C++20)
|
создает итератор
(публичная функция-член) |
|
base
(C++20)
|
возвращает базовый итератор
(публичная функция-член) |
|
operator*
(C++20)
|
возвращает текущий поддиапазон
(публичная функция-член) |
|
operator++
operator++
(int)
(C++20)
|
продвигает итератор
(публичная функция-член) |
std::ranges::split_view:: iterator :: iterator
|
/*iterator*/
(
)
=
default
;
|
(1) | (since C++20) |
|
constexpr
/*iterator*/
(
split_view
&
parent,
ranges::
iterator_t
<
V
>
current,
ranges:: subrange < ranges:: iterator_t < V >> next ) ; |
(2) | (since 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:: iterator :: base
|
constexpr
const
ranges::
iterator_t
<
V
>
base
(
)
const
;
|
(начиная с C++20) | |
Эквивалентно return cur_ ; .
std::ranges::split_view:: iterator :: operator*
|
constexpr
value_type operator
*
(
)
const
;
|
(since C++20) | |
Эквивалентно return { cur_, next_. begin ( ) } ; .
std::ranges::split_view:: iterator :: operator++
|
constexpr
/*iterator*/
&
operator
++
(
)
;
|
(1) | (since C++20) |
|
constexpr
void
operator
++
(
int
)
;
|
(2) | (since 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
;
Функции, не являющиеся членами класса
|
operator==
(C++20)
|
сравнивает базовые итераторы
(функция) |
operator== (std::ranges::split_view:: iterator , std::ranges::split_view:: iterator )
|
friend
constexpr
bool
operator
==
(
const
/*iterator*/
&
x,
const
/*iterator*/
&
y
)
;
|
(since C++20) | |
Эквивалентно return x. cur_ == y. cur_ and x. trailing_empty_ == y. trailing_empty_ ; .
Оператор
!=
синтезируется
из
operator==
.
Эта функция не видна при обычном
неквалифицированном
или
квалифицированном поиске
и может быть найдена только с помощью
поиска, зависимого от аргументов
, когда
std::ranges::split_view::
iterator
является ассоциированным классом аргументов.