std::ranges::join_with_view<V,Pattern>:: iterator
|
template
<
bool
Const
>
class /*iterator*/ |
( 仅用于说明* ) | |
ranges::
join_with_view
<
V, Pattern
>
::
iterator
是
ranges::
join_with_view
<
V, Pattern
>
的
begin()
和
end()
所返回迭代器的类型。
此类的迭代器状态管理方式如同存在两个嵌套迭代器:
-
指向父范围
*
parent_的 外部迭代器
-
-
若
Base满足forward_range概念,则为outer_it_。 -
否则,为
parent_ - >outer_it_。
-
若
该迭代器类具有以下不变性:除非外部迭代器不可解引用,否则内部迭代器始终可解引用。当迭代器被构造、递增或递减时,其外部迭代器可能会被调整以维持该不变性。
目录 |
模板参数
| Const | - | 该迭代器是否为常量迭代器 |
嵌套类型
仅用于说明的类型 |
|
| 类型 | 定义 |
Parent
|
maybe-const
<
Const,
ranges::
join_with_view
<
V, Pattern
>>
( 仅用于说明的成员类型* ) |
Base
|
maybe-const
<
Const, V
>
( 仅用于说明的成员类型* ) |
InnerBase
|
ranges::
range_reference_t
<
Base
>
( 仅用于说明的成员类型* ) |
PatternBase
|
maybe-const
<
Const, Pattern
>
( 仅用于说明的成员类型* ) |
OuterIter
|
ranges::
iterator_t
<
Base
>
( 仅用于说明的成员类型* ) |
InnerIter
|
ranges::
iterator_t
<
InnerBase
>
( 仅用于说明的成员类型* ) |
PatternIter
|
ranges::
iterator_t
<
PatternBase
>
( 仅用于说明的成员类型* ) |
迭代器属性类型 |
|
| 类型 | 定义 |
iterator_concept
|
一个 迭代器标签 , 见下文 |
iterator_category
(条件性存在) |
一个迭代器标签, 见下文 |
value_type
|
std::
common_type_t
<
ranges::
range_value_t
<
|
difference_type
|
std::
common_type_t
<
ranges::
range_difference_t
<
|
确定迭代器概念
iterator_concept
定义如下:
-
若满足以下所有条件,
iterator_concept表示 std::bidirectional_iterator_tag :-
std::
is_reference_v
<
InnerBase > 为 true 。 -
Base满足bidirectional_range概念。 -
InnerBase与PatternBase均满足common_range概念。
-
std::
is_reference_v
<
-
否则,若满足以下所有条件,
iterator_concept表示 std::forward_iterator_tag :-
std::
is_reference_v
<
InnerBase > 为 true 。 -
Base与InnerBase均满足forward_range概念。
-
std::
is_reference_v
<
-
否则,
iterator_concept表示 std::input_iterator_tag 。
确定迭代器类别
给定以下类型:
-
令
OuterC为 std:: iterator_traits <OuterIter > :: iterator_category 。 -
令
InnerC为 std:: iterator_traits <InnerIter > :: iterator_category 。 -
令
PatternC为 std:: iterator_traits <PatternIter > :: iterator_category 。
iterator_category
仅在
std::
is_reference_v
<
InnerBase
>
为
true
,且
Base
与
InnerBase
均满足
forward_range
要求时被定义。此时其定义如下:
-
若
std::
is_reference_v
<
std::
common_reference_t
<
ranges::
range_reference_t
<
InnerBase > ,
ranges:: range_reference_t <PatternBase >> 为 false ,则iterator_category表示 std::input_iterator_tag 。 -
否则,若满足以下所有条件,则
iterator_category表示 std::bidirectional_iterator_tag :-
OuterC、InnerC和PatternC均满足 std:: derived_from < std:: bidirectional_iterator_tag > 。 -
InnerBase和PatternBase均满足common_range。
-
-
否则,若
OuterC、InnerC和PatternC均满足 std:: derived_from < std:: forward_iterator_tag > ,则iterator_category表示 std::forward_iterator_tag 。 -
否则,
iterator_category表示 std::input_iterator_tag 。
数据成员
| 成员 | 描述 |
Parent
*
parent_
|
指向父级
join_with_view
的指针
( 仅用于说明的成员对象* ) |
OuterIter
outer_it_
(仅当
Base
满足
forward_range
概念时存在)
|
外层迭代器
( 仅用于说明的成员对象* ) |
std::
variant
<
PatternIter
,
InnerIter
>
inner_it_
|
内层迭代器
( 仅用于说明的成员对象* ) |
成员函数
|
构造迭代器
(公开成员函数) |
|
|
访问元素
(公开成员函数) |
|
|
前进或回退底层迭代器
(公开成员函数) |
非成员函数
|
(C++23)
|
比较底层迭代器
(函数) |
|
(C++23)
|
将底层迭代器解引用结果转换为其关联的右值引用类型
(函数) |
|
(C++23)
|
交换两个底层迭代器所指向的对象
(函数) |